二叉樹的佇列實現

2021-10-05 02:38:20 字數 1796 閱讀 4568

1.遍歷:

//參考了《資料結構·思想與實現》第一版p119**清單5-1

#include #include using namespace std;

templateclass binarytree

//引數化列表,內建結構體,結構體也可以有函式,不同之處:結構體定義中預設情況下的成員是public,而類定義中的預設情況下的成員是private的。

node(type item,node *l=null,node *r=null):data(item),left(l),right(r){}

};node *root;//二叉樹的根節點

public:

binarytree():root(null){}//其實裡面的元素就只有乙個根節點,內建類不用管他。

binarytree(const type &value)//why &????

~binarytree() //有了new,要自己寫析構函式,析構一般用clear;clear寫在後面也可以哦

type getroot()

type getleft()

type getright()

void createtree(type flag)

if (rdata!=flag)

}cout<

}void maketree(const type &x,binarytree

void delleft()

void delright()

bool isempty()const

void clear()

//上乙個已經delete root了,這樣就不能用這個指標了,所以要把它設為空。

//知識點:指標對應的記憶體刪除之後指向**?

//刪除以後,指標還是指向原來的位址,但是原來位址對應的空間已經被系統**了,如果繼續訪問很可能會導致異常退出。所以要求刪除指標以後,需要將指標賦值為null,表示這個指標已經不指向任何有效記憶體。

int size()const

int height()const

void preorder()const

}void midorder()const

}void postorder()const

}private:

void clear(node *t)

int size(node *t)const

int height(node *t)const//注意:1.這裡的最外面的乙個()必須加上,?的優先順序低於+,會報錯。2.學習這樣的表達

}void preorder(node *t)const

}void midorder(node *t)const

}void postorder(node *t)const}};

int main() {

binarytreetree,tree1('m'),tree2;

tree.createtree('.');

cout<

1.成員函式的包裹

2.寫程式的時候相同模組的複製記得改掉區別的部分啊!還是要仔細才行!

佇列,二叉樹

一 佇列。1 什麼是佇列?在一條儲存結構中,插入節點與刪除節點分別在兩端進行,例如 插入資料在隊尾插入,刪除資料在隊頭進行,那麼這種邏輯關係就是叫做佇列,其特點 先進先出,後進後出。插入資料到佇列中 入隊。從佇列中刪除資料 出隊。2 設計佇列管理結構體和節點結構體。1 管理佇列的結構體。struct...

佇列安排 二叉樹

乙個學校裡老師要將班上n個同學排成一列,同學被編號為1 sim n1 n,他採取如下的方法 先將1號同學安排進佇列,這時佇列中只有他乙個人 2 n2 n號同學依次入列,編號為i的同學入列方式為 老師指定編號為i的同學站在編號為1 i 1 中某位同學 即之前已經入列的同學 的左邊或右邊 從佇列中去掉m...

二叉樹 排序二叉樹的簡單實現

二叉樹 排序二叉樹 include using namespace std 二叉樹的節點 date 資料 left 指向二叉樹的左子樹 right 指向二叉樹的右子樹 template struct node template class btree public btree root null c...