二叉樹基本操作

2022-07-03 17:18:14 字數 2682 閱讀 9286

#include #include 

#include

using

namespace

std;

template

struct

binode

};template

class

bitree

bitree(datatype a,

intn);

~bitree()

void

preorder()

void

inorder()

void

postorder()

void

levelorder();

void nrpreorder();/*

*///

不遞迴的話就可以不用呼叫private定義的函式

void

nrinorder()

void

nrpostorder()

binode

* search(datatype x) ;

int count_leaf() ;

private

: binode

*root;

binode

*create();

void release(binode*bt);

void _preorder(binode*bt);

void _inorder(binode*bt);

void _postorder(binode*bt);

//void _nrpreorder(binode*bt);

void _nrinorder(binode*bt);

void _nrpostorder(binode*bt);

binode

*_search(binode*bt, datatype x);

int _count_leaf(binode*bt);

};//這種構造方式比較麻煩,就直接用後一種構造方式了

template

binode

* bitree::create()

return

bt;}

template

bitree

::bitree(datatype a,int

len) : root(null)

}template

void bitree::release(binode*bt)

}template

void bitree::_preorder(binode*bt)

}template

void bitree::nrpreorder(/*

binode*bt*/)

if( !tree_stack.empty())

}}template

void bitree::_inorder(binode*bt)

}template

void bitree::_nrinorder(binode*bt)

if( !tree_stack.empty())

}}template

void bitree::_postorder(binode*bt)

}template

struct

pnode;};

template

void bitree::_nrpostorder(binode*bt)

while( !tree_stack.empty() && tree_stack.top().flag == 2)//

第二次訪問的時候才訪問

if( !tree_stack.empty())

else

break

; }

}template

void bitree::levelorder()

}template

binode

* bitree::_search(binode*bt , datatype x)

if(p->right !=null)

}return

null;

}template

int bitree::_count_leaf(binode*bt)

intmain()

; bitree

bt(a,sizeof(a)/sizeof(a[0

]));

/*cout<<"preorder: "<*/

//----------------------------

cout<<"

preorder:

"

cout

<<"

levelorder:

"

cout

*p = bt.search(5

);

if(p !=null)

cout

else

cout

<<"

can not find!

"

<<"

leaf number:

"

return0;

}

這兩天把常用的資料結構寫了一下。

二叉樹基本操作

tree.h ifndef tree h define tree h include typedef int element 定義二叉樹 typedef struct nodetreenode void preorder treenode root 遞迴前序遍歷 void inorder treen...

二叉樹基本操作

一.二叉樹的定義 二.二叉樹的建立 定義一棵無資料的二叉樹 6 int left size 7 int right size 為了操作簡便,我們定義一棵不需要儲存資料的二叉樹,只要能儲存節點之間的邏輯關係就行,所以用兩個陣列來表示。left i 第i個節點的左子節點的序號 right i 第i個節點...

二叉樹基本操作

include include define maxsize 100 typedef char elemtype typedef struct node btnode void createbtnode btnode b,char str 由str串建立二叉鏈 j ch str j btnode f...