#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...