题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
递归解法
function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
}
function Depth(r) {
if(r === null)
return 0;
return Math.max(Depth(r.left), Depth(r.right))+1;
}
非递归解法
function TreeDepth(r)
{
if(r === null)
return 0;
var q = [];
var depth = 0;
q.push(r);
// null原来标识当前层是否遍历完毕
q.push(null);
while(q.length !== 0){
var cur = q.shift();
// 当前弹出元素为null时,说明一层以及遍历完毕了,所以depth+1
if(cur === null){
depth++;
if(q.length!==0)
// 最后一层的null弹出时不能再往队列里面加null了
q.push(null);
}
else{
if(cur.left !== null)
q.push(cur.left);
if(cur.right !== null)
q.push(cur.right);
}
}
return depth;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。