/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
var invertTree = function (root) {
function traverse(node) {
if (!node) {
return node
}
[node.left, node.right] = [node.right, node.left]
traverse(node.left)
traverse(node.right)
return node
}
return traverse(root)
};
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isSymmetric = function (root) {
function traverse(lNode, rNode) {
if (!lNode && !rNode) {
return true
}
if (!lNode && rNode) {
return false
}
if (lNode && !rNode) {
return false
}
if (lNode.val !== rNode.val) {
return false
}
const outer = traverse(lNode.left, rNode.right)
const inner = traverse(lNode.right, rNode.left)
return outer && inner
}
return traverse(root.left, root.right)
};
222. 完全二叉树的节点个数 - 力扣(LeetCode)
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var countNodes = function(root) {
let res = 0
function traverse(node) {
if (!node) {
return 0
}
res++
traverse(node.left)
traverse(node.right)
}
traverse(root)
return res
};
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isBalanced = function(root) {
const getDepth = (node) => {
if(!node) {
return 0
}
const leftDepth = getDepth(node.left)
if(leftDepth === -1) {
return -1
}
const rightDepth = getDepth(node.right)
if(rightDepth === -1) {
return -1
}
if(Math.abs(leftDepth - rightDepth) > 1) {
return -1
}
return Math.max(leftDepth, rightDepth) + 1
}
return getDepth(root) !== -1
};
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {string[]}
*/
var binaryTreePaths = function (root) {
const res = []
function traverse(prePath, node) {
if (!node) {
return res
}
if (!node.left && !node.right) {
prePath = `${prePath}${node.val}`
res.push(prePath)
} else {
prePath = `${prePath}${node.val}->`
}
traverse(prePath, node.left)
traverse(prePath, node.right)
}
traverse('', root)
return res
};