标签:sel ret code 递归 遍历 外部 修改 root 节点
BST的中序遍历是升序序列。下标为k-1的元素就是第k个元素。
中序遍历后,找下标为k-1的元素。
class Solution: def kthSmallest(self, root, k): """ :type root: TreeNode :type k: int :rtype: int """ def inorder(r): return inorder(r.left) + [r.val] + inorder(r.right) if r else [] return inorder(root)[k - 1]
每个节点的值修改为原来的节点值加上所有大于它的节点值之和。反序中序遍历,
nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量。
class Solution: def convertBST(self, root: TreeNode) -> TreeNode: def dfs(root: TreeNode): nonlocal total if root: dfs(root.right) total += root.val root.val = total dfs(root.left) total = 0 dfs(root) return root
标签:sel ret code 递归 遍历 外部 修改 root 节点
原文地址:https://www.cnblogs.com/zhaojiayu/p/14333102.html