資料結構 C 實現二叉樹鏈式儲存結構

2021-10-24 11:18:23 字數 3360 閱讀 6784

#pragma once

#include

using

namespace std;

template

<

typename datatype>

struct bintreenode

;// 二叉樹

template

<

class

datatype

>

class

bintree

;

#include

"bitree.h"

template

<

class

datatype

>

bintree

::bintree()

template

<

class

datatype

>

bintree::~

bintree()

/*前序遍歷序列構造二叉樹遞迴

*/template

<

class

datatype

>

bintreenode

* bintree

::create

(bintreenode

* bt)

else

return bt;}/*

銷毀結點

*/template

<

class

datatype

>

void bintree

::destory

(bintreenode

* bt)}/*

遞迴演算法求樹的深度

*/template

<

class

datatype

>

int bintree

::depth

(bintreenode

* bt)

// 左子樹深度

int ldepth =

depth

(bt-

>lchild)

;// 右子樹深度

int rdepth =

depth

(bt-

>rchild)

;// 取左右子樹深度較大的值;根結點佔一成, 所以要+1

return ldepth > rdepth ? ldepth +

1: rdepth +1;

}/*訪問結點

*/template

<

class

datatype

>

void bintree

::vistied

(bintreenode

* bt)

template

<

class

datatype

>

void bintree

::preorder()

template

<

class

datatype

>

void bintree

::inorder()

template

<

class

datatype

>

void bintree

::postorder()

// 前序非遞迴遍歷

template

<

class

datatype

>

void bintree

::npreorder()

// 根節點入棧

stack[

++top]

= root;

// 如果棧不為空

while

(top >-1

)}}// 中序非遞迴遍歷

template

<

class

datatype

>

void bintree

::ninorder()

else}}

// 後續非遞迴遍歷

template

<

class

datatype

>

void bintree

::npostorder()

/*前序遍歷遞迴演算法

*/template

<

class

datatype

>

void bintree

::preorder

(bintreenode

* bt)

// 結束遍歷

return;}

/*中序遍歷遞迴演算法

*/template

<

class

datatype

>

void bintree

::inorder

(bintreenode

* bt)

// 結束遍歷

return;}

/*後續遍歷遞迴演算法

*/template

<

class

datatype

>

void bintree

::postorder

(bintreenode

* bt)

return;}

/*層序遍歷

*/template

<

class

datatype

>

void bintree

::levelorder()

// 建立乙個指標陣列模擬佇列

bintreenode

* queue[50]

;// 隊首指標

int front =-1

;// 對尾指標

int rear =-1

;// 根結點入隊

queue[

++rear]

= root;

// 如果佇列不為空

while

(front != rear)

// 如果存在右孩子結點, 則右孩子結點入隊

if(p-

>rchild !=

null)}

return;}

// 樹的深度

template

<

class

datatype

>

int bintree

::depth()

資料結構二叉樹的鏈式儲存

include stdio.h define type struct student define null 0 define len sizeof struct student struct student type create2tree char str j ch str j return n...

資料結構 鏈式二叉樹

include using namespace std typedef struct treenode treenode,treep 初始化二叉樹 void init tree treep root 前序遍歷二叉樹 void pre order treep rt 中序遍歷二叉樹 void mid o...

資料結構 鏈式二叉樹

define error 0 define true 1 define false 0 status是函式的型別,其值是函式結果狀態 如ok等 typedef int status typedef int telementtype ifndef bitree h included define bi...