陣列表示法用於完全二叉樹的儲存表示非常有效,但表示一般二叉樹則不是很理想。此外,在一棵樹中進行插入和刪除操作時,為了反應結點層次的變動,可能需要移動許多的結點,這樣降低了演算法的效率,而使用了鍊錶表示可以克服這樣的缺點。
根據二叉樹的定義,可以設計出二叉樹節點的構造。二叉樹的每乙個結點至少應該包括三個域:資料、左孩子、右孩子。這種鍊錶結構一般被叫做二叉鍊錶。使用這種鍊錶可以很方便的表示和找到它的子女,但找到它的雙親卻很困難。為了便於查詢雙親,我們還可以增加乙個雙親指標域,這種結構被稱為三叉鍊錶。
結構如下:
三叉鍊錶和二叉鍊錶類似,本文只討論二叉鍊錶。下面給出二叉鍊錶的類定義。
#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.二叉樹的鏈式儲存結構 二叉樹的鏈式儲存結構就是用指標建立二叉樹中節點之間的關係,二叉樹最常...