adt btree
btnode(const t& x)
btnode(const t& x,btnode* l,btnode* r)
//三個資料成員
t element;
btnode* lchild,*rchild;
};
二叉樹類包含唯一的資料成員,它是指向乙個二叉鍊錶根結點的指標root
//二叉樹類(先建立二叉樹結點類)
templatet>
class
binarytree
~binarytree
(); bool isempty
()const;
void clear();
bool root(t& x)const;
void maketree
(const
t& x,binarytree
& left,binarytree
& right);
void breaktree
(const
t& x,binarytree
& left,binarytree
& right);
void preorder
(void (*visit)
(t& x);
void inorder
(void (*visit)
(t& x);
void postorder
(void (*visit)
(t& x);
};protected:
btnode
* root;
private:
void clear
(btnode
* &t);
void preorder
(void (*visit)
(t& x),btnode
*t);
void inorder
(void (*visit)
(t& x),btnode
*t);
void postorder
(void (*visit)
(t& x),btnode
*t);
bool binarytree::root(t& x)const
else
return
false;
}
void binarytree::maketree(const t& x,binarytree& left,binarytree& left
void binarytree::breaktree( t& x,binarytree& left;binarytree& right)
先序遍歷(lvr)同理(rvl)
//公有非遞迴函式
template
void binarytree
::preorder(void (*visit)(t& x))
//私有遞迴函式
template
void binarytree
::preorder(void (*visit)(t& x),btnode* t)
}
中序遍歷(vlr)同理(vrl)
//公有非遞迴函式
template
void binarytree
::inorder(void (*visit)(t& x))
//私有遞迴函式
template
void binarytree
::inorder(void (*visit)(t& x),btnode* t)
}
後序遍歷(lrv)同理rlv
//公有非遞迴函式
template
void binarytree
::postorder(void (*visit)(t& x))
//私有遞迴函式
template
void binarytree
::postorder(void (*visit)(t& x),btnode* t)
}
C 資料結構(樹 二叉樹)
樹的定義 樹是你 n 0 個節點的有限集t t為空是空樹 非空樹具有兩個條件。有且僅有乙個根節點作為樹根 其餘節點可分為m個互不相交的子集t1,tm。其中每乙個子集本手又是一顆樹,稱其為跟節點的子樹。遞迴思想 樹的二元組表示 t d,r d 樹t中的節點集合,r 樹中的節點關係。二元組另外一種表示 ...
資料結構的C實現 二叉樹
二叉樹及其遞迴和非遞迴遍歷 include include define maxkey 100 define ok 1 typedef char elemtype typedef struct node node 二叉樹節點 遞迴先序遍歷 void preorder r node tree 遞迴中序...
資料結構(C實現) 遍歷二叉樹
二叉樹是另一中樹型結構,它的特點是每個結點至多只有兩棵子樹 即二叉樹中不存在度大於 的結點 並且,二叉樹的子樹有左右之分,其次序不能任意顛倒。根據二叉樹的的遞迴定義可知,二叉樹是由3個基本單元組成,根結點 左子樹和右子樹,因此,若能依次遍歷這三部分,便是遍歷了整個二叉樹。假如以l d r分別表示遍歷...