博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《剑指 Offer》——38、二叉树的深度
阅读量:2343 次
发布时间:2019-05-10

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

1. 本题知识点

2. 题目描述

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

3. 解题思路

求树的深度,可以从层次遍历出发考虑。

层次遍历可以使用队列完成,也可以使用递归完成,所以有两种解题思路。

递归

  1. 如果当前结点为空,返回 0
  2. 如果不为空,返回其左子树和右子树中深度最大的值再加 1

使用队列

  1. 创建深度,初始化为 0
  2. 创建一个队列
  3. 将根节点加入队列
  4. 当队列不为空时,执行以下循环
    1. 记录本层二叉树的结点数
    2. 当本层二叉树的结点数大于 0,执行以下循环
      1. 删除队头
      2. 将删除的队头的左右子树加入队尾
      3. 本层二叉树结点树减 1
    3. 深度加 1
  5. 最后返回深度

4. 代码

递归

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; } return Math.max(TreeDepth(root.left), TreeDepth(root.right)) + 1; }}

使用队列

public class TreeNode {
int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) {
this.val = val; }}
import java.util.LinkedList;import java.util.Queue;public class Solution {
public int TreeDepth(TreeNode root) {
// 深度 int depth = 0; // 创建一个队列 Queue
queue = new LinkedList<>(); // 将根节点加入队列 if (root != null) {
queue.add(root); } // 队列不为空,执行循环 while (!queue.isEmpty()) {
// 二叉树本层结点数 int count = queue.size(); while (count > 0) {
// 删除队头结点,将其左右子树加入队列 TreeNode remove = queue.remove(); if (remove.left != null) {
queue.add(remove.left); } if (remove.right != null) {
queue.add(remove.right); } // 二叉树本层结点数减 1 count--; } // 深度加 1 depth++; } return depth; }}

转载地址:http://vyjvb.baihongyu.com/

你可能感兴趣的文章
Java Freemarker 根据模板生成Word
查看>>
Java Mybatis Plus 集成与使用
查看>>
Java 一台电脑部署多个tomcat服务
查看>>
Java WinSw 安装Jar成Windows服务
查看>>
Linux安装Jar成服务
查看>>
Java SSH连接mysql数据库
查看>>
计算机使用常见问题与答案
查看>>
Mysql 触发器的Http请求
查看>>
Mysql 跟踪sql日志
查看>>
搭建一个Vue项目
查看>>
SVN Working Copy Locked 解决方法
查看>>
Java 简单的复习下JDBC 工具类
查看>>
将Java Swing Jar 封装成exe文件
查看>>
端口显示被占用,netstat -aon | findstr却找不到端口的解决方法
查看>>
Linux内核中读写文件数据的方法
查看>>
USB电池充电基础:应急指南(转载)
查看>>
I2C死锁原因及解决方法【转】
查看>>
Ubuntu系统如何安装双网卡及更改网卡名称(eth0改为eth1)
查看>>
二维数组指针
查看>>
Linux下socket的五种IO模型
查看>>