二叉搜索树的重要性质:中序遍历的结果是升序排列。
class Solution:
def __init__(self):
self.res = 0
self.rank = 0
def kthSmallest(self, root: TreeNode, k: int) -> int:
self.traverse(root, k)
return self.res
def traverse(self, root , k):
if not root:
return
self.traverse(root.left, k)
self.rank = self.rank + 1
if self.rank == k:
self.res = root.val
return
self.traverse(root.right, k)class Solution:
def __init__(self):
self.s = 0
def convertBST(self, root: TreeNode) -> TreeNode:
self.traverse(root)
return root
def traverse(self, root):
if not root:
return
self.convertBST(root.right)
self.s = self.s + root.val
root.val = self.s
self.convertBST(root.left)class Solution:
def tree2str(self, t: TreeNode) -> str:
def traverse(root):
if not root:
return ""
if not root.left and not root.right:
return str(root.val) + ""
if not root.right:
return str(root.val) + "(" + traverse(root.left) + ")"
return str(root.val) + "(" + traverse(root.left) + ")(" + traverse(root.right) + ")
return traverse(t)class Solution:
def __init__(self):
self.res = float("inf")
self.pre = -1
def getMinimumDifference(self, root: TreeNode) -> int:
def traverse(root):
if not root:
return 0
traverse(root.left)
if self.pre != -1 and abs(root.val - self.pre) < self.res:
self.res = abs(root.val - self.pre)
self.pre = root.val
traverse(root.right)
traverse(root)
return self.res