二叉樹的遍歷

2021-08-01 07:55:09 字數 2098 閱讀 2450

先序遍歷:1.訪問根結點      2.先序遍歷根結點的左子樹      3.先序遍歷根結點的右子樹

中序遍歷:1.中序遍歷根結點的左子樹   2.訪問根結點     3.中序遍歷根結點的右子樹

後序遍歷:  1.後序遍歷根結點的左子樹   2.後序遍歷根結點的右子樹   3.訪問根結點 

二叉樹的順序儲存結構:    

二叉樹的順序儲存結構是用一組連續的儲存單元存放二叉樹的資料元素。順序儲存二叉樹時,首先對二叉樹中的結點按照滿二叉樹的形式進行編號,不存在的結點也要編號,之後將編號為i的結點儲存在資料的第i-1個分量中。但是一般的二叉樹也必須按完全二叉樹的形式儲存,但是對於那些單支較多的二叉樹來說不合適,因為將造成太多空間的浪費。但是比較適合滿二叉樹和完全二叉樹。

二叉樹的鏈式儲存結構:

二叉鍊錶儲存:如果每個結點結構由乙個資料域和倆個分別指向其左、右子樹的指標組成。data域存放結點的資料資訊,lchild與rchild存放指向左孩子和右孩子的指標

三叉鍊錶儲存:三叉鍊錶是在二叉鍊錶的基礎上加乙個指向雙親結點的指域parent,既便於查詢每個結點的孩子結點,又便於查詢其雙親結點。但是增加了儲存空間的開銷。   儘管二叉鍊錶中無法由結點直接找到其雙親,但由於二叉鍊錶結構靈活,操作方便,對於一般情況的二叉樹,甚至比順序儲存結構還節省空間。因此,二叉鍊錶是常用的二叉樹儲存方式。

二叉樹的二叉鍊錶實現遍歷:

二叉樹類

#include#include"doublenode.h"     //雙鏈表結點類

#include"seqstack.h" //順序棧

#include"linkedstack.h" //鏈式棧

#include"seqqueue.h" //順序迴圈佇列

using namespace std;

template class binarytree // 二叉樹類

;template binarytree::binarytree() //構造空二叉樹

templatebinarytree::~binarytree()

}templatebool binarytree::isempty()

統計二叉樹結點數

template int binarytree::count()

templateint binarytree::count(doublenode*p)

二叉樹的遍歷

#include#include"doublenode.h"     //雙鏈表結點類

#include"seqstack.h" //順序棧

#include"linkedstack.h" //鏈式棧

#include"seqqueue.h" //順序迴圈佇列

using namespace std;

template class binarytree // 二叉樹類

;template binarytree::binarytree() //構造空二叉樹

templatebinarytree::~binarytree()

}templatebool binarytree::isempty()

template int binarytree::count()

templateint binarytree::count(doublenode*p)

template void binarytree::preroot()

}template void binarytree::midroot()

}templatevoid binarytree::postroot()

}#define _crt_secure_no_warnings

#include#include"binarytree.h"

using namespace std;

void creat(binarytree&bitree)

int main()

上一封下一封

« 返回

二叉樹的遍歷 二叉樹遍歷與儲存

在資料結構中,二叉樹是非常重要的結構。例如 資料庫中經常用到b 樹結構。那麼資料庫是如何去單個查詢或者範圍查詢?首先得理解二叉樹的幾種遍歷順序 先序 中序 後序 層次遍歷。先序 根節點 左子樹 右子樹 中序 左子樹 根節點 右子樹 後序 左子樹 右子樹 根節點 按層級 class node if c...

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

玩轉二叉樹(二叉樹的遍歷)

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入格式 ...