"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
this.val = val
this.left, this.right = None, None
"""
class Solution:
# @param root: a TreeNode, the root of the binary tree
# @return: nothing
last = None
def flatten(self, root):
# write your code here
if not root:
return
if self.last!=None:
self.last.left = None
self.last.right = root
self.last = root
# 临时保存右节点
right = self.last.right
# 进入左子树
self.flatten(root.left)
# 进入原来的右子树
self.flatten(right)
递归后序遍历(Recursive Postorder Traversal)
这里对标准的递归后序遍历稍作改动,由“左-右-根”变更为“右-左-根”,详见代码。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def flatten(self, root):
"""
:type root: TreeNode
:rtype: void Do not return anything, modify root in-place instead.
"""
self.pointer = None
def traverse(root):
if not root: return
traverse(root.right)
traverse(root.left)
root.right = self.pointer
root.left = None
self.pointer = root
traverse(root)