二叉樹相關操作

2021-09-29 14:56:51 字數 2181 閱讀 3459

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