• 二叉树的深度


    题目描述

    输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

    简洁代码

    /**
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    */
    public class Solution {
        public int TreeDepth(TreeNode root) {
             if(root == null) return 0;
            int leftDepth = TreeDepth(root.left);
            int rightDepth = TreeDepth(root.right);
            return leftDepth > rightDepth? leftDepth + 1:rightDepth + 1;//这里要加1的原因是深度数的是节点的个数
        }
    }
    
    
    public class BinaryTreeDepth {
         static class  TreeNode{
            int val = 0;
            TreeNode left = null;
            TreeNode right = null;
    
            public TreeNode(int val) {
                this.val = val;
            }
        }
    
        public int treeDepth(TreeNode root){
             if(root == null){
                 System.out.println("root为空");
             }else {
                 System.out.println("root--------------:" + root.val);
             }
            if(root == null) return 0;
            int leftDepth = treeDepth(root.left);
            System.out.println("leftDepth:" + leftDepth);
            int rightDepth = treeDepth(root.right);
            System.out.println("rightDepth:" + rightDepth);
            return leftDepth > rightDepth? leftDepth + 1:rightDepth + 1;
    
        }
    
        public static void main(String[] args){
            BinaryTreeDepth binaryTreeDepth = new BinaryTreeDepth();
            TreeNode treeNode = new TreeNode(1);
            treeNode.left = new TreeNode(2);
            treeNode.right = new TreeNode(3);
            treeNode.left.left = new TreeNode(4);
            treeNode.left.right = new TreeNode(5);
            int i = binaryTreeDepth.treeDepth(treeNode);
            System.out.println(i);
    
    
        }
    }
    
    
    
    root--------------:1
    root--------------:2
    root--------------:4
    root为空
    ==========================左子树遍历完成
    leftDepth:0==>root = 4.left
    root为空
    rightDepth:0=>root = 4.right
    leftDepth:1==>root = 2.left = 4
    root--------------:5==>2.right = 5
    root为空==>root = 5.left
    leftDepth:0==>root = 5.left
    root为空==>root = 5.right
    rightDepth:0==>root = 5.right
    rightDepth:1==>root = 2.right = 5
    leftDepth:2==>root = 1.left = 2<====================左子树的深度为leftDephth + 1 = 3
    root--------------:3==>root = 1.right = 3
    root为空==>root = 3.left 
    leftDepth:0==>root = 3.left 
    root为空==>root = 3.right
    rightDepth:0==>root = 3.right
    rightDepth:1==>root = 1.right = 3<====================右子树的深度为rightDepth + 1 = 2
    3
    
    Process finished with exit code 0
    
    
  • 相关阅读:
    SQLServer: 解决“错误15023:当前数据库中已存在用户或角色
    DEV界面皮肤
    模拟业务最小测试用例
    POJ 2503 Babelfish(map)
    POJ 2001 Shortest Prefixes
    洛谷 P2672 推销员
    POJ 2104 K-th Number && 洛谷 P3834 【模板】可持久化线段树 1(主席树)
    洛谷 P1589 泥泞路
    HDU 6183 Color it(动态开点线段树)
    POJ 2482 Stars in Your Window
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10698548.html
Copyright © 2020-2023  润新知