[剑指offer] 二叉树的深度

简介: 本文首发于我的个人博客:尾尾部落题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

本文首发于我的个人博客:尾尾部落

题目描述

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

解题思路

法一:递归法。求二叉树的深度,就是求左子树、右子树的中深度最大的加上一个根节点,依此递归即可。
法二:层次遍历。每遍历一层,deep 加 1,直接到最后一层,输出 deep。

参考代码

法一:递归法

/**
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 left = TreeDepth(root.left) + 1;
        int right = TreeDepth(root.right) + 1;
        return left > right ? left : right;
    }
}

法二:层次遍历

import java.util.Queue;
import java.util.LinkedList;
public class Solution {
    public int TreeDepth(TreeNode root) {
        if(root == null)
            return 0;
        int deep = 0;
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.offer(root);
        int start = 0, end = 1;
        while(!queue.isEmpty()){
            TreeNode node = queue.poll();
            start ++;
            if(node.left != null){
                queue.offer(node.left);
            }
            if(node.right != null){
                queue.offer(node.right);
            }
            if(start == end){
                end = queue.size();
                start = 0;
                deep ++;
            }
        }
        return deep;
    }
}
目录
相关文章
|
6月前
二叉树中的深度搜索
二叉树中的深度搜索
|
7月前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
【剑指offer】-二叉树的深度-36/67
【剑指offer】-二叉树的深度-36/67
【Leetcode -100.相同的树 -104.二叉树的深度】
【Leetcode -100.相同的树 -104.二叉树的深度】
41 0
剑指offer 59. 二叉树的深度
剑指offer 59. 二叉树的深度
62 0
剑指offer_二叉树---二叉树的深度
剑指offer_二叉树---二叉树的深度
74 0
剑指offer 55 二叉树的深度
DFS深度优先二叉树无非就那几个步骤
|
算法
重温算法之最大二叉树
二叉树的题目还是很抽象,之前记得有个动态二叉树的生成网站现在已经关闭了,试用了好几款生成二叉树的开源框架感觉不是很好,不然有动态图理解起来会更加容易一些。做算法题其实空想是没用的而且效率不高,要有图协助才能事半功倍,另外题解的技巧也需要慢慢积累的,不要急着想一天两天就能完美解题的。
132 0
重温算法之最大二叉树
|
算法
LeetCode 104. 二叉树的最大深度 | 算法-从菜鸟开始i
LeetCode 104. 二叉树的最大深度 | 算法-从菜鸟开始i
143 0