题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
递归解法
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; }