二叉數的初始化和前序 中序 後序 層次遍歷。

2021-09-29 16:48:08 字數 2014 閱讀 1879

思路:

①先按照層次遍歷的思想初始化樹,其中保留初始化陣列邊界內的空結點,權值為0,結果為完全二叉樹

②建完樹之後,通過遞迴遍歷,剪取權值為0的枝,使之成為普通二叉樹

其中,初始化的陣列中,必須包含空結點,值為0。

**:先建btree.h標頭檔案

#pragma once

#define elemtype int

typedef struct node

*btree,node;

void

inittree

(btree head

,elemtype

*a,int length)

;//初始化樹,length為陣列長度

void

preorder

(btree tree)

;//先序

void

inorder

(btree tree)

;//中序

void

levelorder

(btree tree)

;//層次

void

postorder

(btree tree)

;//後續

void

delectnull

(btree tree)

;//剪枝

再建compute.cpp檔案

#include "btree.h"

#include

#include

#include

using namespace std;

void

inittree

(btree head

,elemtype

* a, int length)

else

//左子樹越界

if(i *2+

2< length)

//右子樹未越界

else

//右子樹越界q.

pop();

}delectnull

(head);

//剪枝

}void

preorder

(btree tree)

void

inorder

(btree tree)

void

postorder

(btree tree)

void

delectnull

(btree tree)

void

levelorder

(btree tree)

}

測試:

#include"btree.h"

#include

using namespace std;

int main()

;//初始化陣列

btree head=

newnode

;inittree

( head,a,7)

; cout <<

"層次遍歷:"

<< endl;

levelorder

(head)

; cout <<

"先序遍歷:"

<< endl;

preorder

(head)

; cout <<

"中序遍歷:"

<< endl;

inorder

(head)

; cout <<

"後續遍歷:"

二叉樹的建立,前序,中序,後序,層序遍歷

二叉樹 binary tree 是另一種樹形結構,它的特點是每個節點至多有兩顆子樹,並且其子樹有左右之分,並且順序不能顛倒。主要用遞迴的思想完成建立,遍歷等操作。binarytree const t arr,const t invalied 傳入乙個順序為前序的陣列,invalied意味節點為nul...

二叉樹的遞迴遍歷 (前序,中序,後序,層序)

首先我們來講前序遍歷。前序遍歷很簡單,首先判斷根樹是否為空 注意前序遍歷的次序是 根 左子樹 右子樹 如此遞迴呼叫。以下為 templatevoid bitree preorder binode bt 中序遍歷是實際問題中經常使用的一種遍歷。其 形式與前序遍歷很相似,其遍歷順序為 左子樹 根 右子樹...

前序中序和中序後序還原二叉樹

前序中序還原二叉樹 struct node creat int len,char str1,char str2 由先序序列和中序序列建立二叉樹 root lchild creat i,str1 1,str2 建立左子樹 root rchild creat len i 1,str1 i 1,str2 ...