美文网首页
剑指 offer 笔记 38 | 二叉树的深度

剑指 offer 笔记 38 | 二叉树的深度

作者: ProudLin | 来源:发表于2019-11-10 14:00 被阅读0次

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

思路分析
1)如果一棵树只有一个结点,它的深度为 1。

2)如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加 1;同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加 1。

3)如果既有右子树又有左子树,那该树的深度就是其左、右子树深度的较大值再加 1。

所以可以用递归的方式来实现。

解释说明:

public class Solution {
    public int TreeDepth(TreeNode root) {
        //递归的出口,root为0则返回0,这里可以理解为root为0那肯定没有层数了
        if(root == null){
            return 0;
        }
        //拿到左子树的最大深度
        int nLeft = TreeDepth(root.left);
        //拿到右子树的最大深度
        int nRight = TreeDepth(root.right);
        //找出最大值,并且加上 root 这一层即可
        int depth =  (nLeft > nRight)?(nLeft + 1):(nRight + 1);
        return depth;
    }
}

关于递归的我有点看不懂,于是我去查看了一些资料:https://blog.csdn.net/weixin_38383877/article/details/89363080

非递归方式

import java.util.LinkedList;
import java.util.Queue;

public class Solution {

 public int TreeDepth(TreeNode root) {
    if(root==null) {
      return 0;
    }
    Queue<TreeNode> q=new LinkedList<TreeNode>();
    q.add(root);
    int d=0,count=0,nextcount=q.size();
    while(q.size()!=0) {
      TreeNode t=q.poll();
      count++;
      if(t.left!=null) {
           q.add(t.left);
      }
      if(t.right!=null) {
           q.add(t.right);
      }
      if(count==nextcount) {
           d++;
           count=0;
           nextcount=q.size();
      }
    }
    return d;
  }
}

参考《剑指offer》 第 2 版 P272

相关文章

  • 平衡二叉树

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:树 树的深度 平衡二叉树 题目描述: 输入一棵二叉树...

  • 2022-4-11 搜索 排序

    搜索: 剑指 Offer 55 - I. 二叉树的深度[https://leetcode-cn.com/probl...

  • 剑指 offer 笔记 38 | 二叉树的深度

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

  • 每日一练(27):二叉树的深度

    title: 每日一练(27):二叉树的深度 categories:[剑指offer] tags:[每日一练] d...

  • 剑指offer第二版-55.二叉树的深度

    本系列导航:剑指offer(第二版)java实现导航帖 面试题55:二叉树的深度 题目要求:求二叉树的深度。仅仅包...

  • 为什么实习也要笔试啊

    1.剑指 Offer 55 - I. 二叉树的深度 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过...

  • 剑指 offer:38、二叉树的深度

    38. 二叉树的深度 题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树...

  • 树的子结构

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:二叉树 递归 题目描述: 输入两棵二叉树A,B,判断...

  • [刷题记录] 剑指 Offer 27. 二叉树的镜像

    2021.11.29算法笔记 剑指 Offer 27. 二叉树的镜像 请完成一个函数,输入一个二叉树,该函数输出它...

  • 二叉树的镜像

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:树 递归 题目描述: 操作给定的二叉树,将其变换为源...

网友评论

      本文标题:剑指 offer 笔记 38 | 二叉树的深度

      本文链接:https://www.haomeiwen.com/subject/unqabctx.html