巧用栈中数据类型判断,以此迭代,一气呵成

# 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整型二维数组
#
class Solution:
    def threeOrders(self , root ):
        stack1, stack2, stack3 = [root], [root], [root]
        res1, res2, res3 = [], [], []
        while stack1:
            i, j, k = stack1.pop(), stack2.pop(), stack3.pop()
            if isinstance(i, TreeNode):
                stack1.extend([i.right, i.left, i.val])
            if isinstance(j, TreeNode):
                stack2.extend([j.right, j.val, j.left])
            if isinstance(k, TreeNode):
                stack3.extend([k.val, k.right, k.left])
            if isinstance(i, int):
                res1.append(i)
            if isinstance(j, int):
                res2.append(j)
            if isinstance(k, int):
                res3.append(k)
        return [res1, res2, res3]