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

Posted naonaoling

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树-深度优先搜索-深度相关的知识,希望对你有一定的参考价值。

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

 

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

 

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

新起的方法参数有那些

以上是关于二叉树-深度优先搜索-深度的主要内容,如果未能解决你的问题,请参考以下文章

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

二叉树深度优先遍历和广度优先遍历

从简单二叉树问题重新来看深度优先搜索

⭐算法入门⭐《深度优先搜索》简单02 —— LeetCode 617. 合并二叉树

求二叉树的深度

binarytree二叉树节点DFS深度优先搜索遍历,递归,python