数据结构(C语言版) 树和二叉树 算法设计Demo2
Posted Aiden (winner)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构(C语言版) 树和二叉树 算法设计Demo2相关的知识,希望对你有一定的参考价值。
判别两棵树是否相等。
[题目分析]
先判断当前节点是否相等(需要处理为空、是否都为空、是否相等),如果当前节点不相等,直接返回两棵树不相等;如果当前节点相等,那么就递归的判断他们的左右孩子是否相等。
[算法描述]
int compareTree(TreeNode* tree1, TreeNode* tree2)
//用分治的方法做,比较当前根,然后比较左子树和右子树
bool tree1IsNull = (tree1==NULL);
bool tree2IsNull = (tree2==NULL);
if(tree1IsNull != tree2IsNull)
return 1;
if(tree1IsNull && tree2IsNull)
//如果两个都是NULL,则相等
return 0;
//如果根节点不相等,直接返回不相等,否则的话,看看他们孩子相等不相等
if(tree1->c != tree2->c)
return 1;
return (compareTree(tree1->left,tree2->left)&compareTree(tree1->right,tree2->right))
(compareTree(tree1->left,tree2->right)&compareTree(tree1->right,tree2->left));
//算法结束
以上是关于数据结构(C语言版) 树和二叉树 算法设计Demo2的主要内容,如果未能解决你的问题,请参考以下文章