//拷贝树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; }}