아래 그림처럼 root배열이 주어지면 그 배열의 이진트리모양의 최대 깊이를 파악하는 문제이다.
위의 그림처럼 이진트리를 배열모양처럼 만들어 놓았다.
function TreeNode(val, left, right) {
this.val = (val===undefined ? 0 : val)
this.left = (left===undefined ? null : left)
this.right = (right===undefined ? null : right)
}
하지만 위의 TreeNode 생성자함수로 객체들이 서로 Linked돼 있는 상태이다.
//[3,9,20,null,null,15,7]
//실제는 아래와 같은 모습이다.
{
"val":3,
"left":{"val":9,"left":null,"right":null},
"right":
{"val":20,
"left":{"val":15,"left":null,"right":null},
"right":{"val":7,"left":null,"right":null}
}
}
const maxDepth = function(root) {
const newArr = makeArr(root)
return Math.max.apply(null,newArr)
};
const makeArr = (root,cnt=0,arr=[]) =>{
if(!root) {
arr.push(cnt)
return arr
}else{
makeArr(root.left,cnt+1,arr)
makeArr(root.right,cnt+1,arr)
}
return arr
}