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...