码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树-深度优先搜索-深度

时间:2020-02-26 01:16:19      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:code   比较   void   problems   class   忽略   roo   span   深度优先   

https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal/submissions/

常规解法:

递归实现,迭代实现

111. Minimum Depth of Binary Tree 

class Solution {
    public int minDepth(TreeNode root) {
        if(root == null){
            return 0;
        }
        // return Math.min(minDepth(root.left),minDepth(root.right))+1;
        int left = minDepth(root.left);
        int right = minDepth(root.right);
        return (root.left!=null && root.right!=null)? 1 + Math.min(left,right): 1 + right + left;   
    }
}

注意:深度指的是从根节点到叶子节点最短路径上的节点个数,注释的代码没有考虑定义。

最小深度其实就是中序遍历的一种载体 

104. Maximum Depth of Binary Tree

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

559. Maximum Depth of N-ary Tree

class Solution {
    public int maxDepth(Node root) {
        if (root == null) {
            return 0;
        }
        int max = 0;
        for (Node node : root.children) {
            max = Math.max(max, maxDepth(node));
        }
        return max + 1;
    }
}

543. 二叉树的直径 ??

 1 class Solution {
 2     public int max = 0;
 3     public int diameterOfBinaryTree(TreeNode root) {
 4         if(root == null || (root.left==null && root.right==null)){
 5             return 0;
 6         }
 7         getMax(root);
 8         return max;
 9 
10     }
11     public void getMax(TreeNode node){
12         if(node==null){
13             return;
14         }
15 
16         int curMax = getMaxDepthOfNode(node.left)+getMaxDepthOfNode(node.right);
17         max = max > curMax ? max : curMax;
18         getMax(node.left);
19         getMax(node.right);
20     }
21     public int getMaxDepthOfNode(TreeNode node){
22         if(node == null){
23             return 0;
24         }
25         return 1+Math.max(getMaxDepthOfNode(node.left), getMaxDepthOfNode(node.right));
26     }
27 }

注意:最开始理解错了,写成左子树最大深度+右子树最大深度,忽略了可能不会过root结点。

思路:求每一个node的最大深度,但是应该占内存。网传解法比我这个快,但是我感觉我的比较好理解...

98. Validate Binary Search Tree

 

最小深度、最大深度、全部路径、最短路径、最长路径

 

如何判断是在方法本身递归,还是新起一个方法?

新起的方法参数有那些

二叉树-深度优先搜索-深度

标签:code   比较   void   problems   class   忽略   roo   span   深度优先   

原文地址:https://www.cnblogs.com/naonaoling/p/11791880.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!