104.111. 二叉树的最小/最大深度
104
111
const initTree = (inputList) => {
const total = inputList.length;
if(!inputList[0])return null;
inputList[0] = new TreeNode(inputList[0]);
inputList.forEach((el,index) => {
let leftP = null;
let rightP = null;
if (!el) return;
if (index*2+1 < total) {
leftP = inputList[index*2+1]? new TreeNode(inputList[index*2+1]): null;
inputList[index*2+1] = leftP;
}
if (index*2+2 < total) {
rightP = inputList[index*2+2]? new TreeNode(inputList[index*2+2]): null;
inputList[index*2+2] = rightP;
}
inputList[index].left = leftP;
inputList[index].right = rightP;
});
return inputList[0];
}
function TreeNode(val, left, right) {
this.val = (val===undefined ? 0 : val)
this.left = (left===undefined ? null : left)
this.right = (right===undefined ? null : right)
}
var maxDepth = function(root) {
if(!root) return 0;
const queue = [root];
const depList = [];
let levelNum = 0;
while(queue.length) {
const levelLen = queue.length;
levelNum += 1;
for(let i=0;i<levelLen;i++){
const curNode = queue.pop();
if (curNode.left) queue.unshift(curNode.left);
if (curNode.right) queue.unshift(curNode.right);
if (!curNode.left && !curNode.right) {
depList.push(levelNum);
}
}
}
return Math.max(...depList);
};
var minDepth = function(root) {
if(!root) return 0;
const queue = [root];
const depList = [];
let levelNum = 0;
while(queue.length) {
const levelLen = queue.length;
levelNum += 1;
for(let i=0;i<levelLen;i++){
const curNode = queue.pop();
if (curNode.left) queue.unshift(curNode.left);
if (curNode.right) queue.unshift(curNode.right);
if (!curNode.left && !curNode.right) {
depList.push(levelNum);
}
}
}
return Math.min(...depList);
};
(()=>{
const input = [3,9,20,null,null,15,7];
const root = initTree(input);
console.log('root', root);
const res = maxDepth(root);
console.log('res', res);
})();