5. 层序遍历
var levelOrder = function(root) {
let res = [];
let queue = [];
if(!root) {
return res;
}
queue.push(root);
while(queue.length) {
let length = queue.length;
let curRes = [];
for(let i = 0; i < length; i++) {
let node = queue.shift();
curRes.push(node.val);
if(node.left) {
queue.push(node.left)
}
if(node.right) {
queue.push(node.right)
}
}
res.push(curRes);
}
return res;
};
6. 翻转二叉树(难以理解)
var invertTree = function(root) {
if (root === null) {
return null;
}
const left = invertTree(root.left);
const right = invertTree(root.right);
root.left = right;
root.right = left;
return root;
};
7. 对称二叉树
var isSymmetric = function(root) {
const compareNode=function(left,right){
if(left===null&&right!==null||left!==null&&right===null){
return false;
}else if(left===null&&right===null){
return true;
}else if(left.val!==right.val){
return false;
}
let outSide=compareNode(left.left,right.right);
let inSide=compareNode(left.right,right.left);
return outSide&&inSide;
}
if(root===null){
return true;
}
return compareNode(root.left,root.right);
};