LeetCode题目
669.修剪二叉搜索树
题目链接:Trim a Binary Search Tree - LeetCode
代码如下:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func trimBST(root *TreeNode, low int, high int) *TreeNode {
if root == nil {
return nil
}
if root.Val < low {
return trimBST(root.Right, low, high)
}
if root.Val > high {
return trimBST(root.Left, low, high)
}
root.Left = trimBST(root.Left, low, high)
root.Right = trimBST(root.Right, low, high)
return root
}
108.将有序数组转换为二叉搜索树
题目链接:Convert Sorted Array to Binary Search Tree - LeetCode
代码如下:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func traversal(nums []int, left, right int) *TreeNode {
if left > right {
return nil
}
mid := left + (right-left)/2
root := &TreeNode{
Val: nums[mid],
Left: nil,
Right: nil,
}
root.Left = traversal(nums, left, mid-1)
root.Right = traversal(nums, mid+1, right)
return root
}
func sortedArrayToBST(nums []int) *TreeNode {
return traversal(nums, 0, len(nums)-1)
}
538.把二叉搜索树转换为累加树
题目链接:Convert BST to Greater Tree - LeetCode
代码如下:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func convertBST(root *TreeNode) *TreeNode {
pre := 0
var convert func(cur *TreeNode)
convert = func(cur *TreeNode) {
if cur == nil {
return
}
convert(cur.Right)
cur.Val += pre
pre = cur.Val
convert(cur.Left)
}
convert(root)
return root
}