def inOrder(root, k): if not root: return inOrder(root.left, k) self.rank += 1 if k == self.rank: self.res = root.val return inOrder(root.right, k)
def convertBST(self, root): """ :type root: TreeNode :rtype: TreeNode """ self.sm = 0 def inOrder(root): if not root: return inOrder(root.right) self.sm += root.val root.val = self.sm inOrder(root.left) inOrder(root) return root
def kthSmallest(self, root, k): """ :type root: TreeNode :type k: int :rtype: int """ self.res = 0 self.rank = 0 def inOrder(root, k): if not root: return inOrder(root.left, k) self.rank += 1 if k == self.rank: self.res = root.val return inOrder(root.right, k) inOrder(root, k) return self.res
def inOrder(root): if not root: return inOrder(root.right) self.sm += root.val root.val = self.sm inOrder(root.left)
# self.val = val # self.left = left # self.right = right class Solution(object): def convertBST(self, root): """ :type root: TreeNode :rtype: TreeNode """ self.sm = 0 def inOrder(root): if not root: return inOrder(root.right) self.sm += root.val root.val = self.sm inOrder(root.left) inOrder(root) return root if __name__ == '__main__': root = constructBinaryTree( [6, 2, 7, 1, 4, null, 9, null, null, 3, 5, null, null, 8, null]) inOrder(root) print() root = Solution().convertBST(root) inOrder(root) print()