後序遍歷(非遞迴):
enum tags
;//特徵標識定義
template
<
class
t>
class
stackelement
//棧元素的定義
;#include
using namespace std;
template
<
class
t>
void bitree
::postorderwithoutrecusion
(bitreenode
* root)
element=astack.
pop();
pointer=element.pointer;
while
(element.tag==right)
//end else
}//endwhile
element.tag=right;
astack.
push
(element)
; pointer=pointer-
>
rchild()
;}//end while
}
層序遍歷:
#include
using
namespace std;
template
<
class
t>
void bitree
::levelorder
(binarytreenode
* root)
//end while
}
二叉樹的析構函式:
template
<
class
t>
void bitree
::release
(binode
* root)
}template
<
class
t>
bitree::~
bitree
(void
)
特殊的二叉樹構造:
template
<
class
t>
binode
* bitree
::creat
(binode
*&root ,binode
*parent)
return root;
}template
<
class
t>
bitree
::bitree
(int i)
樹轉換為二叉樹
1.兄弟加線.
2.保留雙親與第一孩子連線,刪去與其他孩子的連線.
3.順時針轉動,使之層次分明.
森林轉換為二叉樹
⑴ 將森林中的每棵樹轉換成二叉樹;
⑵ 從第二棵二叉樹開始,
依次把後一棵二叉樹的根結點作為前一棵二叉樹根結點的右孩子,
當所有二叉樹連起來後,此時所得到的二叉樹就是由森林轉換得到的二叉樹。
二叉樹轉換為樹或森林
⑴ 加線——若某結點x是其雙親y的左孩子,則把結點x的右孩子、右孩子的右孩子、……,都與結點y用線連起來;
⑵ 去線——刪去原二叉樹中所有的雙親結點與右孩子結點的連線;
⑶ 層次調整——整理由⑴、⑵兩步所得到的樹或森林,使之層次分明。
二叉樹的儲存結構
二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...
二叉樹的儲存結構
二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...
二叉樹的儲存結構
二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...