1. 中序遍历
类型1:对于一个二叉查找树来说,其中序遍历结果是一个有序数组
def convertBiNode(self, root: TreeNode) -> TreeNode:
self.ans = self.pre = TreeNode(-1)
def dfs(root):
if not root:
return
dfs(root.left)
root.left = None
self.pre.right = root
# 当第一次执行到下面这一行代码,恰好是在最左下角, 这个时候 self.pre = root 就切断了 self.pre
# 和 self.ans 的联系
# 之后 self.pre 的变化都不会体现到 self.ans 上。
# 直观上来说就是 self.ans 在遍历到最左下角的时候下车了
# 因此最后返回 self.ans 即可
self.pre = root
dfs(root.right)
dfs(root)
return self.ans.right
说明:https://leetcode-cn.com/problems/binode-lcci/solution/di-gui-dfs-tu-