'''
解题思路:
思路:
先序:根左右,先存当前根节点,然后遍历左子树,最后遍历右子树
中序:左根右,先遍历左子树,再保存根节点,最后遍历右子树
后序:左右根,先遍历左子树,再遍历右子树,最后保存根节点
'''
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
# @param root TreeNode类 the root of binary tree
# @return int整型二维数组
#
pre = []
def dfs_pre(root):
if not root:
return
pre.append(root.val)
dfs_pre(root.left)
dfs_pre(root.right)
mid = []
def dfs_mid(root):
if not root:
return
dfs_mid(root.left)
mid.append(root.val)
dfs_mid(root.right)
post = []
def dfs_post(root):
if not root:
return
dfs_post(root.left)
dfs_post(root.right)
post.append(root.val)
class Solution:
def threeOrders(self , root ):
# write code here
dfs_pre(root)
dfs_mid(root)
dfs_post(root)
return [pre,mid,post]