判断二叉树是否对称
2016-01-12 22:26
676 查看
判断一棵二叉树是否对称。二叉树节点定义如上次的结构相同:
typedef struct node {
int x;
struct node* left;
struct node* right;
} BN;
int isSymmetric(BN* root);
来判断一棵二叉树是否对称,对称返回1,非对称返回0.
node结构要按照上面的代码在symmetric.h中进行定义。
注意被测试二叉树不一定是满二叉树。如果树不存在(根节点指针为空)返回0。如果除根节点外没有任何的其他节点返回1
typedef struct node {
int x;
struct node* left;
struct node* right;
} BN;
int isSymmetric(BN* root);
来判断一棵二叉树是否对称,对称返回1,非对称返回0.
node结构要按照上面的代码在symmetric.h中进行定义。
注意被测试二叉树不一定是满二叉树。如果树不存在(根节点指针为空)返回0。如果除根节点外没有任何的其他节点返回1
#include<stdio.h> #include<stdlib.h> #define MAXD 50 typedef struct node { int x; struct node* left; struct node* right; } BN; //建树 void buildTree(BN** root) { int temp; BN** que[MAXD]; int head = 0; int tail = 1; que[0] = root; scanf("%d", &temp); while (temp != -1) { *que[head] = malloc(sizeof(struct node)); (*que[head])->x = temp; que[tail] = &((*que[head])->left); tail = (tail + 1) % MAXD; que[tail] = &((*que[head])->right); tail = (tail + 1) % MAXD; head = (head + 1) % MAXD; scanf("%d", &temp); } while (head != tail) { *que[head] = NULL; head = (head + 1) % MAXD; } } void freeTree(BN* root) { if (root != NULL) { freeTree(root->left); freeTree(root->right); free(root); } } //判断二叉树是否对称 int isSy2(BN *nodel, BN *noder) { if (nodel == NULL && noder == NULL) { return 1; } if (nodel != NULL && noder != NULL && noder->x == nodel->x) { return isSy2(nodel->left, noder->right)&&isSy2(nodel->right, noder->left); } else { return 0; } } int isSymmetric(BN* Prtroot) { if (Prtroot == NULL) { return 0; } return isSy2(Prtroot->left, Prtroot->right); } int main() { BN* root = NULL; buildTree(&root); printf("%d\n", isSymmetric(root)); freeTree(root); return 0; }
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- C语言二叉树的非递归遍历实例分析
- 使用C语言构建基本的二叉树数据结构
- C++非递归队列实现二叉树的广度优先遍历
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- C#非递归先序遍历二叉树实例
- C++非递归建立二叉树实例
- C语言实现找出二叉树中某个值的所有路径的方法
- C++实现二叉树遍历序列的求解方法
- C语言实现二叉树遍历的迭代算法
- 用C语言判断一个二叉树是否为另一个的子结构
- C++实现二叉树非递归遍历方法实例总结
- C++二叉树结构的建立与基本操作
- 深入遍历二叉树的各种操作详解(非递归遍历)
- JavaScript数据结构和算法之二叉树详解
- java使用归并删除法删除二叉树中节点的方法
- Java中二叉树数据结构的实现示例
- Java的二叉树排序以及遍历文件展示文本格式的文件树
- python数据结构之二叉树的建立实例
- python数据结构树和二叉树简介