二叉樹及其遍歷

2021-08-01 09:03:42 字數 2560 閱讀 2187

滿二叉樹肯定是完全二叉樹,完全二叉樹不一定是滿二叉樹

二叉樹的遍歷

先序遍歷:也叫做先根遍歷、前序遍歷,首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左、右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹,如果二叉樹為空則返回。

中序遍歷:首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。在遍歷左、右子樹時,仍然先遍歷左子樹,再訪問根結點,最後遍歷右子樹。

後序遍歷:首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點,在遍歷左、右子樹時,仍然先遍歷左子樹,然後遍歷右子樹,最後遍歷根結點。

層序遍歷:按二叉樹的每一層的順序來遍歷,也就是先訪問根,然後訪問第一層,接著訪問第二層。

1. 先序遍歷:1->2->4->8->9->5->10->3->6->7

2. 中序遍歷:8->4->9->2->10->5->1->6->3->7

3. 後序遍歷:8->9->4->10->5->2->6->7->3->1

4. 層序遍歷:1->2->3->4->5->6->7->8->9->10

遍歷方式**實現(以標準二叉樹為例,且標號從1到n)

先序遍歷

中序遍歷

後序遍歷

可以發現,我們只要換一下dfs裡語句的順序,就能實現不同的遍歷方式

其中,知道了中序和先序,可以求出後序,知道了中序和後序,可以求先序

已知先序和中序,求後序(輸入為字元形式)

#include using namespace std;

#define mst(a,b) memset((a),(b),sizeof(a))

#define f(i,a,b) for(int i=(a);i

typedef long long ll;

const int maxn = 100005;

const int mod = 475;

const ll inf = 0x3f3f3f3f;

const double eps = 1e-6;

#define rush() int t;scanf("%d",&t);while(t--)

char pre[maxn],in[maxn],post[maxn]; //分別代表先序,中序和後序

void build(int n,char *pre,char *in,char *post)

int main()

return 0;

}

已知中序和後序求層序

#include #include #include #include #include #include using namespace std;

#define mst(a,b) memset((a),(b),sizeof(a))

#define rush() int t;scanf("%d",&t);while(t--)

typedef long long ll;

const int maxn = 100005;

const ll mod = 1e9+7;

const ll inf = 1e18;

const double eps = 1e-6;

int n,m;

int a[maxn];

int b[maxn];

int left[maxn],right[maxn];

int build(int la,int ra,int lb,int rb)

}if(ans)

return rt;

}void dfs(int rt)

}int main()

for(int i=1;i<=n;i++)

int rt=build(1,n,1,n);

dfs(rt);

puts("");

}

二叉樹及其遍歷

二叉樹是乙個很重要的儲存結構,所以和大家分享一下我對二叉樹的理解並結合 希望讓大家都能對二叉樹有乙個最清晰的認識 首先,二叉樹是每個節點最多有兩個子樹的樹結構,這是二叉樹的定義,二叉樹的結構如下圖 可以看到二叉樹必要的是根節點,也就是a,每個節點都會有左子節點和右子節點,那麼從b開始看,它又是乙個二...

二叉樹及其應用 二叉樹遍歷

給定二叉樹的廣義表表示,構造二叉樹並輸出二叉樹的四種遍歷順序。輸入說明 輸入僅一行,該行僅由 以及大小寫字元構成的二叉樹的廣義表表示,字串長度不超過100。輸出說明 在接下來的四行中依行輸出二叉樹的四種遍歷 輸入樣列 a b d,c e,f h 輸出樣列 abdcefh dbaecfh dbehfc...

排序二叉樹及其遍歷

所謂建立排序二叉樹就是,就是將各結點資料元素順序插到一棵二叉樹中,在插入的過程中,始終保持二叉樹中每個結點的值都大於其左子樹上每個結點的值,而小於或等於其右子樹上每個結點的值,每個結點資訊包括結點資料 結點值 左子樹指標 右子樹指標。程式執行的過程中,bt指標始終指向根結點,p指標指向當前已找到的結...