二叉树的按层打印和ZigZag打印
生活随笔
收集整理的這篇文章主要介紹了
二叉树的按层打印和ZigZag打印
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目:給定一個(gè)二叉樹的頭節(jié)點(diǎn)head, 分別實(shí)現(xiàn)按層和ZigZag打印二叉樹的函數(shù)
class Node:def __init__(self,value):self.value = valueself.left = Noneself.right = Nonedef printByLevel(head):if head == None:return NoneQueue = []level = 1last = headnlast = Noneprint("level " + str(level) + ":")level +=1Queue.append(head)while len(Queue)!=0:node = Queue.pop(0)if node.left!=None:Queue.append(node.left)nlast = node.leftif node.right!=None:Queue.append(node.right)nlast = node.rightif head == last and len(Queue)!=0:print("\n")print("level " + str(level) + ":")level +=1last = nlast ZigZag打印實(shí)現(xiàn)def printByZigZag(head):if head == None:returndequeue = []dequeue.append(head)islr = Truelast = headnlast = Nonelevel = 1print("level " + str(level) + ":")level +=1while len(queue)!=0:if islr:head = dequeue.pop(0)print(head.value)if head.left:if nlast == None:nlast = head.leftdequeue.append(head.left)if head.right:if nlast == None:nlast = head.rightdequeue.append(head.right)else:head = dequeue.pop()print(head.value)if head.right:if nlast == None:nlast = head.rightdequeue.insert(0,head.right)if head.left:if nlast == None:nlast = head.leftdequeue.insert(0,head.left)if head == last and dequeue:islr = not islrlast = nlastnlast = Nonelevel +=1print("level " + str(level) + ":")leve +=1?
總結(jié)
以上是生活随笔為你收集整理的二叉树的按层打印和ZigZag打印的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 通过有序数组生成平衡搜索二叉树
- 下一篇: 寻找搜索二叉树中两个错误的节点