Idea: 1. Use the list to save the results; 2. Use stacks (list implementation) to store nodes; 3. When root node exists, save result, root node into stack; 4. Point the root node to Zuozi; 5. The root node does not exist, the stack top element is out of the stack, and the root node points to the right sub-tree of the top element of the stack; 6. Repeat step 3-6 until the stack is empty.
leetcode:144. Binary Tree Preorder Traversal
# Definition for a binary tree node.# class TreeNode (object):# def __init__ (self, x):# self.val = x# self.left = None# self.right = NoneclassSolution (Object):defPreordertraversal ( Self, root):""": Type Root:treenode: Rtype:list[int] """Ret=[] Stack=[] whileRootorStack whileRoot:ret.append (Root.val) stack.append (root) root=Root.leftifStack:t=Stack.pop () root=T.rightreturnRet
Python implements non-recursive first-order traversal of a two-fork tree