leetcode 104 二叉树的最大深度
树
计算机的数据结构是现实世界物体间关系的一种抽象。家族的族谱,公司架构中的人员组织关系,电脑中的文件夹结构,html渲染的dom结构等等,这些有层次关系的结构在计算机领域都叫做树。
树是一种非线性数据结构。
树结构的基本单位是节点。节点之间的链接,称为分支(branch)。节点与分支形成树状,结构的开端,称为根(root),或根结点。根节点之外的节点,称为子节点(child)。没有链接到其他子节点的节点,称为叶节点(Leaf)。
简单的二叉树
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
递归
递归就是把大问题分解成一个个的小问题解决。递归的过程是一个压栈的过程,每次递归都会把当前程序的所有信息压到栈中,到达递归出口时,再往外弹
大佬做的递归方法:
递归的小方法 产品经理法。
-
定义函数功能,不用管其具体实现。
从高层次的角度来定义函数功能。 你可以把自己想象成产品经理。只需要知道要做什么事情就行了,而怎么实现我不管,那是码农的事情。 -
确定大问题和小问题的关系。
到这里我们还不知道 f 怎么实现的,但是我们已经完成了产品经理的需求。 -
补充递归终止条件。
思路
递归地分别计算出左子树和右子树的高度,取最大值加一,就是当前二叉树的最大深度。
public int maxDepth(TreeNode root) {
int depth=1;
if (root==null) return 0;
else {
depth=depth+Math.max(maxDepth(root.left),maxDepth(root.right));
}
return depth;
}