(Java 剑指 offer)二叉树的深度
发布日期:2021-05-07 19:44:12 浏览次数:23 分类:精选文章

本文共 1061 字,大约阅读时间需要 3 分钟。

文章目录

一、题目

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

二、深度优先遍历

使用层次遍历,

(1)如果树只有一个结点,它的深度为1,
(2)如果根节点只有左子树没有右子树,则深度为左子树的深度加1,只有右子树同理
(3)如果既有左子树也有右子树,则该深度就是左子树和右子树的最大值加1

class Solution {       public int TreeDepth(TreeNode root) {           //结点为空返回0        if (root == null) {               return 0;        }        //分别递归计算左右子树的深度        int leftDepth = TreeDepth(root.left);        int rightDepth = TreeDepth(root.right);        //左右子树较大者加一即为该树深度        return leftDepth > rightDepth ? (leftDepth + 1) : (rightDepth + 1);    }}

三、广度优先遍历

借助队列,每次出一层,相应长度加一

import java.util.*;public class Solution {       public int TreeDepth(TreeNode root) {           if(root==null){               return 0;        }        //设置队列        Deque
deque = new LinkedList<>(); deque.add(root); //表示树的长度 int len = 0; while(!deque.isEmpty()){ //此时队列的长度,也就是一层的队列节点个数 int length = deque.size(); for(int i=0;i

四、总结

关键是对深度优先遍历和广度优先遍历的运用

BFS:中心思想就是层序遍历,一层一层遍历,借助队列实现

DFS:中心思想是递归遍历,先左子树走到头,然后在右子树

上一篇:Spring-SpringMVC-Mybatis 整合相关 xml 配置文件
下一篇:一篇文章带你搞定 SpringMVC 中的拦截器

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年03月23日 02时46分04秒