二叉樹的儲存結構(二)

2021-10-01 05:12:31 字數 1863 閱讀 8075

後序遍歷(非遞迴):

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 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...