654. 最大二叉树
一遍过,第一次感觉自己的算法有了一点点的进步
var constructMaximumBinaryTree = function(nums) {
if(nums.length === 0) return null
let maxNum = Math.max(...nums)
let maxNumIndex = nums.indexOf(maxNum)
let left = nums.slice(0,maxNumIndex)
let right = nums.slice(maxNumIndex+1)
return new TreeNode(maxNum,constructMaximumBinaryTree(left),constructMaximumBinaryTree(right))
};
617. 合并二叉树
一遍过
var mergeTrees = function(root1, root2) {
if(!root1 && !root2){
return null
}else if(!root1 || !root2){
let node = (root1 || root2)
let val = node.val
return new TreeNode(val,mergeTrees(node.left,null),mergeTrees(node.right,null))
}
let val = root1.val + root2.val
return new TreeNode(val,mergeTrees(root1.left,root2.left),mergeTrees(root1.right,root2.right))
};
700. 二叉搜索树中的搜索
两遍过,val > root.val 这个条件写反了
var searchBST = function(root, val) {
if(!root) return null
if(root.val === val) return root
let flag = val > root.val ? true : false
if(flag){
return searchBST(root.right,val)
}else{
return searchBST(root.left,val)
}
};
98. 验证二叉搜索树
这道题a的时间比较久,一开始没想到中序遍历这个思路
var isValidBST = function(root) {
let pre = null
let fn = (root) => {
if(!root) return true
let left = fn(root.left)
if(pre && pre.val >= root.val) return false
pre = root
let right = fn(root.right)
return left && right
}
return fn(root)
};