日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

遍历二叉树的神级方法(Morris遍历)

發(fā)布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 遍历二叉树的神级方法(Morris遍历) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目:

給定一顆二叉樹的頭節(jié)點(diǎn)head,完成二叉樹的先序、中序和后序遍歷,如果二叉樹的節(jié)點(diǎn)為N,則要求時間復(fù)雜度為O(N),額外空間復(fù)雜度為O(1)

Morris遍歷

代碼如下:

def getMorris(Node head):if head == None:returncur = headmostRight = Nonewhile cur!=None:mostRight = cur.leftif mostRight!=None:while mostRight!=None and mostRight.right!=cur:mostRight = mostRight.rightif mostRight.right == None:mostRight.right = curcur = cur.leftcontinueelse:mostRight.right = Nonecur = cur.right # morries 前序遍歷def morriesPre(Node head):if head == None:return cur = headmostRight = Nonewhile cur!=None:mostRight = cur.leftif mostRight!=None:while mostRight!=None and mostRight.right!=cur:mostRight = mostRight.rightif mostRight==None:mostRight.right = curprint(cur.value)cur = cur.leftcontinueelse:mostRight == Noneelse:print(cur.value)cur = cur.right# morries 中序遍歷def morriesIn(Node head):if head == None:return cur = headmostRight = Nonewhile cur!=None:mostRight = cur.leftif mostRight!=None:while mostRight!=None and mostRight.right!=cur:mostRight = mostRight.rightif mostRight==None:mostRight.right = curprint(cur.value)cur = cur.leftcontinueelse:mostRight == Noneprint(cur.value)cur = cur.right # morries 后序def morrieslast(Node head):if head == None:returncur = headmostRight = Nonewhile cur!=None:mostRight = cur.leftif mostRight != None:while mostRight!=None and mostRight.right!=cur:mostRight = mostRight.rightif mostRight == None:mostRight.left = curcur = cur.leftcontinueelse:mostRight.right = NoneprintEdge(cur.left)printEdfe(head)cur = cur.rightdef printEdge(Node head):tail = reverseEdge(head)cur = tailwhile cur!=None:print(cur.value)cur = cur.rightreverseEdge(tail)def reverseEdge(Node from_):pre = Nonenext_ = Nonewhile from_!=None:next_ = from_.rightfrom_.right = prepre = from_from_ = next_return pre

?

總結(jié)

以上是生活随笔為你收集整理的遍历二叉树的神级方法(Morris遍历)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。