剑指Offer38:二叉树的深度

本文介绍了两种计算二叉树深度的方法:递归和层次遍历。递归方法通过比较左子树和右子树的最大深度来确定树的深度;层次遍历则利用队列,当某一层节点全部出队后,深度加一。层次遍历的关键在于判断队列中某一层节点出队完成,即队列大小减到0时。这两种方法都是解决二叉树问题的有效策略。
摘要由CSDN通过智能技术生成

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

解法一:递归

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

解法二:借助队列,对二叉树进行层次遍历;
在层次遍历的过程中,每次当队列中某一层的节点出队完成后,高度+1;
关键点:判别队列中某一层节点出队完成的标准是什么?
在出队之前,此时队列中记录的只有某一层节点,所以队列的大小就是某一层节点的个数。当此个数减到0的时候,则说明该层节点全部出队完成

import java.util.*;
public class Solution {
    public int TreeDepth(TreeNode root) {
        if(root == null)
            return 0;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        int count = 0;
        while(!queue.isEmpty()){
            int size = queue.size();
            while(size>0){
                TreeNode temp = queue.poll();
                if(temp.left != null)
                    queue.add(temp.left);
                if(temp.right != null)
                    queue.add(temp.right);
                size --;
            }
            count++;
        }
        return count;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值