實現二叉樹的鏈式儲存和部分的函式
這是乙個鏈式儲存實現的二叉樹。首先 是構造了乙個名為 node 的 二叉樹資料結構內有(1)char 變數,(2)兩個指向其本身的結構體指標變數 lch,rch.然後 用typedef分別給 node結構體起了乙個bn的別名和給 node* 起了乙個bt 的別名方便後面**的使用。bn和bt分別是代表二叉樹節點 型別和二叉樹節點指標。在主函式裡先定義了乙個結構體指標(node *) 型別的變數 head,這個結構體指標變數 head是我們要構造的二叉樹的根結點;(變數的本質是在記憶體中開闢一塊空間,這塊空間在記憶體中有相應的位址,而空間裡存放我們要存放的資料。)在 cbtree函式裡頭 形參 是( bt &t) 意思是定義了乙個結構體指標變數 t ,而 t前面的 & 起到了乙個引用傳遞(意思是呼叫函式cbtree時引用了head變數)的作用。cbtree函式內部是乙個先序構造二叉樹的操作,前面已說明是在head上進行操作則在呼叫cbtree函式的開始就是對 head 結點的操作 。輸入date 資料 c如果c是' , ' 則變數t(這步操作是變數head為空,接下來的遞迴操作就是具體的樹的左右分支結點為空)就為空,否則進行 t=new bn(t=new bn,申請一塊該型別空間,並把位址返回,藉此完成了結構體指標變數的初始化)並把 c 的值賦給t->date(這步操作是把 c 的值賦給結構體指標變數head的,接下來的遞迴操作就是給具體的樹的左右分支結點賦值),接下來就是遞迴操作實現左右子樹的構建。
#include#include#include#includeusing namespace std;
typedef struct node
bn,*bt; // bn 代表結點 *bt代表根節點
void cbtree(bt &t) // 先序建二叉樹
return ;
}void pre(bt t) //先序遍歷二叉樹
}void in(bt t) //中序遍歷二叉樹
}void post(bt t) //後序遍歷二叉樹
}void level(bt t) //層次遍歷二叉樹
}int cnt=0;
void cntleaf1(bt t) //求葉子節點
cntleaf1(t->lch);
cntleaf1(t->rch);
}}int cntleaf2(bt t) //求葉子節點
}int dep(bt t) //求二叉樹的深度
int main()
二叉樹的鏈式儲存
實現二叉樹的基本操作 建立 遍歷 計算深度 結點數 葉子數等。輸入c,先序建立二叉樹,表示空節點 輸入h 計算二叉樹的高度 輸入l 計算二叉樹的葉子個數 輸入n 計算二叉樹節點總個數 輸入1 先序遍歷二叉樹 輸入2 中序遍歷二叉樹 輸入3 後續遍歷二叉樹 輸入f 查詢值 x的節點的個數 輸入p 以縮...
二叉樹的鏈式儲存
若用鍊錶儲存一棵二叉樹時,每個結點除資料域外,還有指向左孩子和右孩子的兩個指 針。在這種儲存結構中,n個結點的二叉樹共有 個指標域,其中有 個指標域是存放了位址,有 個指標是空指標。因為有n個節點,每個節點都存了乙個lchild,乙個rchild,所以共2n個指標域。因為除了根節點,其他所有的節點都...
二叉樹鏈式儲存操作
前言 二叉樹的儲存結構 1.二叉樹的順序儲存結構 利用性質5,對於完全二叉樹可以利用一維陣列儲存,如果不是完全二叉樹,則可以補空節點,使成為完全二叉樹在進行儲存,但是對於非完全二叉樹,可能要浪費很多的空間。2.二叉樹的鏈式儲存結構 二叉樹的鏈式儲存結構就是用指標建立二叉樹中節點之間的關係,二叉樹最常...