层序遍历判断是否为完美二叉树
来源:互联网 发布:linux 如何查看nat 编辑:程序博客网 时间:2024/05/16 05:14
#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;}
阅读全文
1 0
- 层序遍历判断是否为完美二叉树
- 判断二叉搜索树是否为后序遍历序列
- 判断是否为二叉搜索树的后序遍历
- 判断是否为二叉树的后续遍历
- 判断序列是否为二叉树后序遍历
- 笛卡尔树 中序遍历判断是否为二叉搜索树
- 判断一个数组是否为二叉树的后序遍历
- 判断整数序列是否为二叉查找树的后序遍历结果
- 输入一个数列,判断是否为某一个二叉搜索树的后序遍历序列
- 《剑指offer》:[24]判断一个序列是否为二叉树的后序遍历序列
- 判断给定的数组是否为二叉搜索树的后序遍历序列
- Q392判断是否为平衡二叉树(后序遍历实现)
- 判断某序列是否为某二叉搜索树的后序遍历
- 剑指offer——判断一个序列是否为二叉搜索树的后序遍历
- 剑指offer 判断数组的后序遍历是否为搜索二叉树
- 判断数组是否为搜索二叉树的后序遍历
- 关于判断某一数组内容是否为一个二叉搜索树的后序遍历结果
- 【面试题】剑指offer24--判断一个序列是否为二叉树的后序遍历
- LintCode算法题解——移动零、玩具工厂、左填充、丑数
- 椭圆一般式方程面积求解
- Java编程思想_读书笔记(1)直接常量
- Qt5 双滑块支持float变化的控件,以及单滑块float控件,供大家参考
- js常见的判断移动端或者pc端或者安卓和苹果浏览器的方法总结
- 层序遍历判断是否为完美二叉树
- 挂死在starting at 0x308000...
- 好文收藏:哔哩哔哩大数据采集服务—Lancer系统设计与实践
- c#TextBox输入框自动提示、自动完成、自动补全功能(初级方式)
- shiro 认证(二)
- Servlet中获取客服端Ip地址
- 带你吃透RTMP
- spark randomSplit glom函数操作详解
- Activity 启动模式