Maximum Depth of Binary Tree
Description
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
Note: A leaf is a node with no children.
Example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its depth = 3.
Solution(javascript)
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
const maxDepth = (root) => {
if (!root) {
return 0
}
const stack = []
let max = 0
const getHeight = () => (stack.length ? stack[stack.length - 1].height : 0)
const push = (node, height) => {
while (node) {
height = height != null ? height + 1 : getHeight() + 1
stack.push({ node, height })
if (height > max) {
max = height
}
node = node.left
}
}
const pop = () => {
while (stack.length) {
const last = stack.pop()
if (last.node.right) {
push(last.node.right, last.height)
}
}
}
push(root)
pop()
return max
}