层序遍历判断是否为完美二叉树
2017-09-07 09:56
239 查看
#include<stdio.h> #include<stdlib.h> typedef struct Node { char ch; struct Node *left,*right; } Node,*Pnode; void create(Pnode *node) { char ch; ch = getchar(); if(ch=='#') { *node = NULL; } else { *node = (Pnode)malloc(sizeof(Node)); (*node)->ch = ch; create(&(*node)->left); create(&(*node)->right); } } int perfect(Pnode node) { int i,l=1,flag=0; if(node==NULL) return 1; Pnode nodes[200]; nodes[0]=node; for(i=0; i<l; i++) { if(flag) { if(nodes[i]->left!=NULL||nodes[i]->right!=NULL) return 0; } if(nodes[i]->left==NULL) { flag = 1; } else { nodes[l++]=nodes[i]->left; } if(flag&&nodes[i]->right!=NULL) return 0; if(nodes[i]->right==NULL) { flag = 1; } else { nodes[l++]=nodes[i]->right; } } return 1; } int main() { Pnode node = NULL; create(&node); printf(perfect(node)?"tree is a perfect tree\n":"tree is not a perfect tree\n"); return 0; }
普通层序遍历
#include<stdio.h> #include<stdlib.h> typedef struct Node { char ch; struct Node *left,*right; } Node,*Pnode; void create(Pnode *node) { char ch; ch = getchar(); if(ch=='#') { *node = NULL; } else { *node = (Pnode)malloc(sizeof(Node)); (*node)->ch = ch; create(&(*node)->left); create(&(*node)->right); } } int visit(Pnode node) { int i,l=1,flag=0; if(node==NULL) return 0; Pnode nodes[200]; nodes[0]=node; for(i=0; i<l; i++) { printf("%c",nodes[i]->ch); if(nodes[i]->left!=NULL){ nodes[l++]=nodes[i]->left; } if(nodes[i]->right!=NULL) { nodes[l++]=nodes[i]->right; } } return 1; } int main() { Pnode node = NULL; create(&node); visit(node); return 0; }
相关文章推荐
- 二叉树的链式存储结构 前序 后序 中序 层序遍历操作实现 判断是否完全二叉树
- 二叉树的(按行打印)层序遍历,树的高度,判断是否为平衡二叉树
- 判断给定数组是否是二叉树的前序或者后序遍历结果
- 二叉树——判断两棵二叉树是否相等(先序和中序遍历序列建立二叉树)
- 面试题之对称的二叉树,层序遍历(每层节点打印成一行),平衡二叉树的判断
- 输入一个数组,判断该数组是否是某二叉树的前序遍历结果
- 剑指offer 判断数组的后序遍历是否为搜索二叉树
- 【遍历二叉树】08判断两个二叉树是否相同【Same Tree】
- 剑指offer24判断某一序列是否是某一搜索二叉树的后续遍历结果
- 【遍历二叉树】09判断二叉树是否关于自己镜像对称【Symmetric Tree】
- 【LeetCode91-100】编码种数,逆转单链表,IP地址转化,中序遍历二叉树,生成二叉搜索树,计算二叉树个数,交叉string【hard】,判断二叉搜索树是否合法,恢复二叉树(有两个元素被交换)
- 如何只遍历一次判断一棵二叉树是否为平衡二叉树
- 判断二叉树的后序遍历序列是否合法
- 【遍历二叉树】10判断二叉树是否平衡【Balanced Binary Tree】
- 二叉树层次遍历的应用--判断一颗二叉树是否为规则二叉树
- 二叉树的遍历(篇4)判断从根到叶节点的和是否等于某个给定的值
- 二叉树相关操作(先序建立二叉树、求子节点数量,判断是否为平衡二叉树,先序遍历,中序遍历,后序遍历)
- 二叉树问题---判断数组是否为某搜索二叉树的后序遍历的结果
- [置顶] 二叉树层次遍历的应用--判断一颗二叉树是否为规则二叉树