資料儲存 二叉樹的鏈式儲存

2021-08-21 09:27:20 字數 3541 閱讀 1253

陣列表示法用於完全二叉樹的儲存表示非常有效,但表示一般二叉樹則不是很理想。此外,在一棵樹中進行插入和刪除操作時,為了反應結點層次的變動,可能需要移動許多的結點,這樣降低了演算法的效率,而使用了鍊錶表示可以克服這樣的缺點。

根據二叉樹的定義,可以設計出二叉樹節點的構造。二叉樹的每乙個結點至少應該包括三個域:資料、左孩子、右孩子。這種鍊錶結構一般被叫做二叉鍊錶。使用這種鍊錶可以很方便的表示和找到它的子女,但找到它的雙親卻很困難。為了便於查詢雙親,我們還可以增加乙個雙親指標域,這種結構被稱為三叉鍊錶。

結構如下:

三叉鍊錶和二叉鍊錶類似,本文只討論二叉鍊錶。下面給出二叉鍊錶的類定義。

#ifndef _head_

#define _head_

#include

typedef int datatype;

typedef struct bintreenode

binarynode;

class binarytree

binarytree(binarytree& s);

~binarytree();

void creatbintree(binarynode*&subtree);

void ceratbintree();

bool isempty()

binarynode *find();//搜尋

void preorder();

void preorder(binarynode *subtree);//前序遍歷

void inorder();

void inorder(binarynode *subtree);//中序

void postorder();

void postorder(binarynode *subtree);//後序

int count(binarynode* subtree);//統計節點個數

int count();

int hight();

int hight(binarynode* subtree);//求樹高度

void copy();

binarytree* copy(binarynode*&tree);//複製二叉樹

private:

binarynode *root;

};#endif

#include 

using

namespace

std;

typedef

char datatype;

datatype refvalue = '#';//輸入結束符

typedef

struct bintreenode

binarynode;

class binarytree

binarytree(binarytree& s);

~binarytree();

bool isempty();

binarynode *find(datatype &item);//搜尋

void creatbintree();

void creatbintree(binarynode*&subtree);

void preorder();

void preorder(binarynode *subtree);//前序遍歷

void inorder();

void inorder(binarynode *subtree);//中序

void postorder();

void postorder(binarynode *subtree);//後序

int count(binarynode* subtree);//統計節點個數

int count();

int hight();

int hight(binarynode* subtree);//求樹高度

void copy();

binarynode* copy(binarynode*&tree);//複製二叉樹

void destory(binarynode*&tree);//銷毀

二叉樹的鏈式儲存

實現二叉樹的基本操作 建立 遍歷 計算深度 結點數 葉子數等。輸入c,先序建立二叉樹,表示空節點 輸入h 計算二叉樹的高度 輸入l 計算二叉樹的葉子個數 輸入n 計算二叉樹節點總個數 輸入1 先序遍歷二叉樹 輸入2 中序遍歷二叉樹 輸入3 後續遍歷二叉樹 輸入f 查詢值 x的節點的個數 輸入p 以縮...

二叉樹的鏈式儲存

若用鍊錶儲存一棵二叉樹時,每個結點除資料域外,還有指向左孩子和右孩子的兩個指 針。在這種儲存結構中,n個結點的二叉樹共有 個指標域,其中有 個指標域是存放了位址,有 個指標是空指標。因為有n個節點,每個節點都存了乙個lchild,乙個rchild,所以共2n個指標域。因為除了根節點,其他所有的節點都...

二叉樹鏈式儲存操作

前言 二叉樹的儲存結構 1.二叉樹的順序儲存結構 利用性質5,對於完全二叉樹可以利用一維陣列儲存,如果不是完全二叉樹,則可以補空節點,使成為完全二叉樹在進行儲存,但是對於非完全二叉樹,可能要浪費很多的空間。2.二叉樹的鏈式儲存結構 二叉樹的鏈式儲存結構就是用指標建立二叉樹中節點之間的關係,二叉樹最常...