二叉樹的儲存結構(一)

2021-10-01 05:03:58 字數 2622 閱讀 9807

順序儲存結構:

完全二叉樹和滿二叉樹中結點的序號可以唯一地反映出結點之間的邏輯關係 。

構造:

void

create

(char preorder,

char inorder,

int start_p,

int end_p,

int start_i,

int end_i,

char data,

int root)

} data[root]

=preorder[start_p]

;create

(preorder,inorder,start_p+

1,start_p+k-start_i,start_i,k-

1,data,

2*root)

;create

(preorder,inorder,start_p+k-start_i+

1,end_p,k+

1,end_i,data,

2*root+1)

;}return

;}

前序遍歷:

void

preorder

(int root,

char data)

return

;}

一棵二叉樹改造後成完全二叉樹形態,需增加很多空結點,造成儲存空間的浪費。二叉樹的順序儲存結構一般僅儲存完全二叉樹

二叉鍊錶:

結點的定義:

template

<

class

t>

struct binode

;

宣告:

template

<

class

t>

class

bitree

void

inorder()

void

postorder()

void

levelorder()

;private

: binode

*root;

binode

*creat()

;void

release

(binode

*root)

;void

preorder

(binode

*root)

;void

inorder

(binode

*root)

;void

postorder

(binode

*root)

;void

levelorder

(binode

*root);}

;

前序遍歷:

template

<

class

t>

void bitree::

preorder

(binode

*root)

}

非遞迴前序遍歷:

template

<

class

t>

void bitree::

preorder

(binode

*root)if(

!s.empty()

)}}

二叉樹的構造:

無參構造

template

<

class

t>

bitree ::

bitree()

template

<

class

t>

binode

* bitree ::

creat()

return root

}

有參構造

template

<

class

t>

bitree

::bitree()

template

<

class

t>

void bitree

::creat

(binode

*&root )

}

中序遍歷(遞迴):

template

<

class

t>

void bitree::inorder (binode

*root)

}

中序遍歷(非遞迴):

template

<

class

t>

void bitree::inorderwithoutd (binode

*root)if(

!astack.

empty()

)}}

二叉樹的儲存結構

二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...

二叉樹的儲存結構

二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...

二叉樹的儲存結構

二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...