104. Maximum Depth of Binary Tree

來源:互聯網
上載者:User

標籤:ISE   廣度優先   linked   一個   com   記錄   lis   span   圖片   

一、題目

  1、審題

  2、分析

    給出一棵二叉樹,輸出其最大深度。

 

二、解答

  1、思路:

    方法一、

      採用遞迴方式,輸出其最大深度。

public int maxDepth(TreeNode root) {        return getDepthHelper(root, 1);    }            private int getDepthHelper(TreeNode root, int depth) {                if(root == null)            return depth - 1;                return Math.max(getDepthHelper(root.left, depth + 1), getDepthHelper(root.right, depth + 1));    }

  

  方法二、

    直接在此方法上遞迴。

  public int maxDepth3(TreeNode root) {        if(root == null)            return 0;                return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));    }

 

  方法三、

    採用 BFS 廣度優先遍曆,用一變數記錄深度。

public int maxDepth2(TreeNode root) {                if(root == null)            return 0;        int depth = 0;        Queue<TreeNode> queue = new LinkedList<TreeNode>();        queue.add(root);                while(!queue.isEmpty()) {            depth++;            int size = queue.size();            while(size-- > 0) {                if(queue.peek().left != null)                    queue.add(queue.peek().left);                if(queue.peek().right != null)                    queue.add(queue.peek().right);                queue.poll();            }        }                return depth;    }

 

  方法四、

    利用 DFS 深度優先遍曆方法;

    採用兩個棧,一個棧記錄節點,另一個棧記錄節點對應的深度,也採用一個變數記錄最大深度。

public int maxDepth4(TreeNode root) {                if(root == null)            return 0;        int max = 0;        Stack<TreeNode> stack = new Stack<>();        Stack<Integer> value = new Stack<>();        stack.push(root);        value.push(1);        while(!stack.isEmpty()) {            TreeNode node = stack.pop();            int tmp = value.pop();                        max = Math.max(tmp, max);                        if(node.left != null) {                stack.push(node.left);                value.push(tmp+1);            }            if(node.right != null) {                stack.push(node.right);                value.push(tmp+1);            }        }                return max;    }

 

104. Maximum Depth of Binary Tree

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.