我自己写在这里了 我自己可以在这里测试
层序遍历
def levelSearch(self, root): #二叉树的层序遍历
res = [root]
temp = [root]
newTemp = []
while len(temp) > 0:
for node in temp:
if node.left:
newTemp.append(node.left)
if node.right:
newTemp.append(node.right)
res = res + newTemp
temp = newTemp
newTemp = []
for node in res:
print(node.val)
前序和中序遍历的非递归
def frontSearch(self, root):
res = []
node = root
while res or node:
while node:
#print(node.val) #前序遍历
res.append(node)
node = node.left
node = res.pop()
print(node.val) #中序遍历
node = node.right
后序遍历的非递归
def backSearch(self, root): #后序遍历
stack1 = []
stack2 = []
node = root
while stack1 or node:
while node:
stack1.append(node)
stack2.append(node.val)
node = node.right
node = stack1.pop()
node = node.left
while stack2:
print(stack2.pop())