#include
using namespace std;
typedef
struct btnode btnode;
btnode *
newnode
(int value)
//非遞迴
btnode*
nodesearch
(btnode*root, btnode *
*parent,
int value)
}//遞迴
btnode*
nodesearch2
(btnode*root,
int value)
else
}//求最大值
btnode*
maxnode
(btnode*root)
//求最小值
btnode*
minnode
(btnode*root)
//遞迴
btnode*
insertnode
(btnode*root,
int value)
//非遞迴
btnode*
insertnode2
(btnode*root,
int value)
if(parent->value >> value)
parent->left = node;
else
parent->right = node;
return root;
}//刪除操作
btnode*
deletenode
(btnode*root,
int value)
else
root =
null
;free
(node);}
else
if(node->left&&node->right)
else
free
(node);}
}//結點數目
intsizenode
(btnode*root)
//二叉樹高度
intheightnode
(btnode*root)
//前序遍歷
void
preparse
(btnode*root)
//中序遍歷
void
minparse
(btnode*root)
//後序遍歷
void
lastparse
(btnode*root)
//輔助列印出來層級遍歷
void
orderlevelprint
(btnode*root,
int level)
orderlevelprint
(root, level -1)
;orderlevelprint
(root, level -1)
;}//二叉樹層序遍歷
void
orderlevel
(btnode*root)
//得到第k層的全部節點數目
intgetlevel
(btnode*root,
int k)
//判斷兩顆二叉樹是否相同
bool btnodecmp
(btnode*root1, btnode*root2)
//求二叉樹的映象
void
mirrorbtnode
(btnode*root)
//判斷二叉樹是否是完全二叉樹
bool iscbt
(btnode*root,
int index,
int nodecount)
//複雜寫法
bool iscbt2
(btnode * node)
else
else
if(p->right)
//只有右節點
return false;
else
if(p->left)
//只有左節點
else
//沒有節點
flag = true;}}
return true;
}
二叉樹 二叉樹的相關操作
遞迴實現 建立求樹高 求葉子數 求節點數 統計度為2的結點個數 後序輸出 先序輸出 中序輸出 交換左右子樹 include include include define true 1 define false 0 define ok 1 define error 0 define overflow ...
二叉樹的相關操作
定義節點 typedef struct treenodebitreenode,bitree 注意 在有修改樹的情況下,必須用指標做引數,即bitree root,不能寫成bitreenode root。void createbitree bitree t 其餘中序和後序,格式一樣 void preo...
C 二叉樹相關操作
c 實現二叉樹的相關操作,包括遞迴和非遞迴方式。struct treenode 遍歷順序 根左右。遞迴方式 description 前序遍歷 遞迴 param root return void preorderrecur treenode root cout root val 前序遍歷當前結點 pr...