//拷贝树
void copy_tree(TreeNode *&dst,TreeNode *src) 
...{
if( NULL==src)
dst= NULL ;
else 
...{
dst=(TreeNode *) malloc(sizeof(TreeNode));
dst->left = dst->right = NULL;
dst->value = src->value;
copy_tree(dst->left,src->left);
copy_tree(dst->right,src->right);
}
}
//判断两棵二叉树是否相等
bool equal_tree(TreeNode *a, TreeNode *b)
...{
if (a == NULL && b == NULL) ...{
return true;
}
if (a != NULL && b != NULL &&(a->value == b->value)&&
equal_tree(a->left, b->left) && equal_tree(a->right, b->right)) ...{
return true;
}
else...{
return false;
}
}
//查找节点
bool find_node(TreeNode *t, int value)
...{
if( t == NULL )
return false;
if( t->value == value )
...{
return true;
}
if( t->value < value )
return find_node(t->left, value);
if(t->value > value)
return find_node(t->right, value);
}
//查找父节点
TreeNode* parent_node(int value, TreeNode *t)
...{

if (t == NULL) ...{
return NULL;
}
if (t->value == value) //根节点
return t;
if (t->left->value == value || 
t->right->value == value) ...{ //非根节点
return t;
}
else if (value < t->value) ...{
return parent_node(value, t->left);
}
else if (value > t->value) ...{
return parent_node(value, t->right);
}
return NULL;
}
//统计节点个数
int count_node(TreeNode *t)
...{
if (t == NULL) ...{
return 0;
}
else...{
return 1+count_node(t->left)+count_node(t->right);
}
}
//统计层数
int level(TreeNode *t)
...{
int l=0, r=0;
if (t == NULL) ...{
return 0;
}
else...{
if (t->left != NULL) ...{
l=1+level(t->left);
}
if (t->right != NULL) ...{
r=1+level(t->right);
}
return l>r?l:r;
}
}
//判断是否为二叉排序树
bool isbst(TreeNode *t)
...{
if ( t == NULL ) ...{
return true;
}

if (isbst(t->left) && isbst(t->right) ) ...{
if ((t->left != NULL && t->right == NULL && t->value > t->left->value) ||
(t->right != NULL && t->left == NULL && t->value <= t->right->value) ||
(t->left != NULL && t->right != NULL && t->value > t->left->value && t->value <= t->right->value) ||
(t->left == NULL && t->right == NULL))...{
return true;
}
else...{
return false;
}
}
else...{
return false;
}
}
本文详细介绍了二叉树的各种操作实现方法,包括拷贝树、判断两棵树是否相等、查找节点及其父节点、统计节点数量和层数、判断是否为二叉排序树等核心功能。通过这些操作,读者可以深入理解二叉树的数据结构特性。
1550

被折叠的 条评论
为什么被折叠?



