树的遍历(前中后层)python
中序遍历:
#左中右 #递归实现 def inorderTraversal(self, root): if root==None: return [] return self.inorderTraversal(root.left)+[root.val]+self.inorderTraversal(self.right) #遍历实现 def inorderTraversal(self, root): stack=[] sol=[] curr=root while curr or stack: #if curr 不为None,则进行栈添加,然后获取其左节点(存储的都为左和中节点) if curr: stack.append(curr) curr=curr.left else: #左节点为空,才开始进行下一步,则进行添加上一个节点的取值
curr=stack.pop() sol.append(curr.val) curr=curr.right return sol
1 def preorderTraversal(self, root): 2 if root==None: 3 return [] 4 stack=[] 5 sol=[] 6 curr=root 7 while curr or stack: 8 if curr: 9 sol.append(curr.val) 10 stack.append(curr.right) 11 curr=curr.left 12 #如果当前节点的左节点为None,则返回上一个节点的右节点 13 else: 14 curr=stack.pop() 15 return sol