NOTE

二叉树的深度

记录通过递归取左右子树最大深度计算二叉树深度的方法。

Data Structures & Algorithms创建于 更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 题目描述

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

2. 思路

1+左右子树深度的较大者

3. 实现

  • java
public class 二叉树的深度
{
    public int TreeDepth(TreeNode root)
    {
        //检查参数是否为空
        if (root == null)
        {
            return 0;
        }
        //1+左右子树深度的较大者
        return 1 + Math.max(this.TreeDepth(root.left), this.TreeDepth(root.right));
    }
}
  • go
/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * @param pRoot TreeNode类
 * @return int整型
 */
//时间复杂度:O(n)
//空间复杂度:O(n),当退化到链表时
func TreeDepth(pRoot *TreeNode) int {
	if pRoot == nil {
		return 0
	}

	return 1 + max(TreeDepth(pRoot.Left), TreeDepth(pRoot.Right))
}
func max(a int, b int) int {
	if a < b {
		return b
	}
	return a
}

4. 参考

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看