根據二叉樹的先序和中序遍歷輸出層序遍歷

2021-09-29 09:54:03 字數 529 閱讀 1617

寫一下我的乙個思路,coding就不貼了。

如何分割先序和後序的方法可以看我輸出後序遍歷那篇部落格,這裡只談談分割後怎麼遞迴能得到層次遍歷的方法。

當然方法有很多,我這裡提供一種暴力一點,通用一點的方法。

我給這種方法起了個名字叫標籤繫結法。

所謂標籤繫結,就是我在把元素新增到result列表的時候,不是直接新增元素,而是新增乙個二元列表(或者二元組),如[level,元素],每次遞迴level加一,要注意level放在前面方便排序。

最後只要把result排個序,然後用列表生成。

result = [y for [x, y] in result]

就能得到想要的結果。

這種方法應用性很廣,對於那些自己定義的型別,放到二元組裡怎麼排序呢?

只需要在類裡新增deflt(self, other): defgt(self, other):,告訴python你打算怎麼比較這個類與其他元素(包括其他型別的元素)比較大小即可直接使用現有的sort方法。

根據先序遍歷和中序遍歷建立二叉樹

先序遍歷的順序是根左右,中序遍歷的順序是左根右。根據這一特性,先序遍歷的第乙個元素肯定是根節點。所以我們只要在中序遍歷中找到該根節點的值,根節點以左就是它的左子樹,根節點以右就是它的右子樹,然後就可以遞迴的方式建立二叉樹 假設現在有一顆二叉樹如下 先序序列為 18,14,7,3,11,22,35,2...

根據二叉樹的先序遍歷和中序遍歷建立二叉樹

根據二叉樹的先序遍歷和中序遍歷建立二叉樹 rebacktree 根據二叉樹的先序遍歷和中序遍歷建立二叉樹。rebacktree1 根據二叉樹的後序序遍歷和中序遍歷建立二叉樹。include stdio.h include stdlib.h typedef struct node node,nodep...

根據二叉樹的先序遍歷和中序遍歷重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。public class solution int in treenode root reconstructbinarytree p...