zoukankan      html  css  js  c++  java
  • 104.二叉树的最大深度

    给定一个二叉树,找出其最大深度。

    二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

    说明: 叶子节点是指没有子节点的节点。

    示例:
    给定二叉树 [3,9,20,null,null,15,7]

        3
       / 
      9  20
        /  
       15   7
    

    返回它的最大深度 3 。

    有两种解法

    1.深度优先遍历

    求出每一个子树的深度,依次往上递加1,可以用递归解决。

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

    2.广度优先遍历

    每一层每一层的遍历,每遍历一层,深度加一。

    广度优先遍历的步骤是用一个栈保存头结点,接下来弹出栈顶,再将栈顶的左右节点入栈(先入右,再入左,这样访问是先左再右),直到栈空为止。

    class Solution {
        public int maxDepth(TreeNode root) {
            if(root == null) {
                return 0;
            }
            Stack<TreeNode> q = new Stack<>();
            q.add(root);
            int depth = 0;
            while(q != null) {
                depth ++;
                int len = q.size();
                for(int i = 0; i < len; i++) {
                    TreeNode node = q.peek();
                    if(node.right != null) {
                        q.add(node.right);
                    }
                    if(node.left != null) {
                        q.add(node.left);
                    }
                    q.pop();
                }
            }
            return depth;
        }
    }
    
  • 相关阅读:
    随笔
    我的舅舅
    代码规范
    SpringMVC_乱码问题
    SpringMVC_接受请求及数据回显
    Restful风格
    第六周总结
    SpringMVC_控制器
    SpringMVC_初次使用
    SpringMVC_简介
  • 原文地址:https://www.cnblogs.com/Jiewl/p/12462148.html
Copyright © 2011-2022 走看看