二叉樹的鏈式儲存

2021-08-19 00:00:08 字數 1978 閱讀 3338

實現二叉樹的基本操作:建立、遍歷、計算深度、結點數、葉子數等。

輸入c,先序建立二叉樹,#表示空節點;

輸入h:計算二叉樹的高度;

輸入l:計算二叉樹的葉子個數;

輸入n:計算二叉樹節點總個數;

輸入1:先序遍歷二叉樹;

輸入2:中序遍歷二叉樹;

輸入3:後續遍歷二叉樹;

輸入f:查詢值=x的節點的個數;

輸入p:以縮格文字形式輸出所有節點。

測試輸入:

cabc##de#g##f###hl

n123

fap期待的輸出:

created success!

height=5.

leaf=3.

nodes=7.

preorder is:a b c d e g f .

inorder is:c b e g d f a .

postorder is:c g e f d b a .

the count of a is 1.

the tree is:ab

cdeg

f

#include #include #include using namespace std;

int aa=0;

class binarytree ;

class bintreenode //定義結點類

bintreenode(char x,bintreenode *left=null,bintreenode *right=null ):data(x),leftchild(left),rightchild(right) //gouzao

~bintreenode ( ) //析構函式

private:

bintreenode *leftchild,*rightchild; //左、右子女鏈域

char data; //資料域

};class binarytree

binarytree(char value)

~binarytree()

void createbintree( )//建立二叉樹

bintreenode *rightchild (bintreenode *current )

int height( )

int size( )

int leaf()

bintreenode *getroot ( ) const

void preorder( )

};void binarytree ::createbintree(bintreenode* & subtree) //私有函式: 建立根為subtree的子樹

else

subtree = null;

}int binarytree ::height(bintreenode * subtree )//數的高度

int binarytree ::size( bintreenode * subtree ) //私有函式,計算根指標為subtree的二叉樹中的結點個數

int binarytree::leaf(bintreenode *subtree) //私有函式,計算根指標為subtree的二叉樹中的葉子個數

void binarytree ::inorder ( bintreenode *subtree )

}void binarytree ::preorder( bintreenode *subtree )

}void binarytree ::pre( bintreenode *subtree,char a1) //遍歷尋找有幾個等於a1

}void binarytree ::postorder( bintreenode *subtree )

}int binarytree::output(bintreenode *subtree,int n)

}int main()

}return 0;

}

二叉樹的鏈式儲存

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

二叉樹鏈式儲存操作

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

二叉樹鏈式儲存結構

由二叉樹定義得知,二叉樹的結點由乙個元素和分別指向其左 右子樹的兩個分支構成,則表示二叉樹的鍊錶中的結點至少包含3個域,如下圖。二叉樹建立 程式是如何建立出二叉樹的?以下圖為例 從主函式開始執行 定義乙個bitnode型別的指標root,將指標root的位址賦給t t是乙個bitnode型別指標的指...