判断二叉树是否是搜索二叉树和完全二叉树
来源:互联网 发布:国事访问知乎 编辑:程序博客网 时间:2024/05/31 13:16
import java.util.*;//判断二叉树是否是搜索二叉树和完全二叉树public class isTree{//二叉树节点的定义public static class Node{public int value;public Node left;public Node right;public Node(int data){this.value=data;}} //判断是否是搜索二叉树(中序遍历递增)public static boolean isBST(Node head){ if(head==null) { return true; } boolean res=true; Node pre=null; Node cur1=head; Node cur2=null; while(cur1!=null) { cur2=cur1.left; if(cur2!=null) { while(cur2.right!=null&&cur2.right!=cur1) { cur2=cur2.right; } if(cur2.right==null) { cur2.right=cur1; cur1=cur1.left; continue; }else { cur2.right=null; } } if(pre!=null&&pre.value>cur1.value) { res=false; } pre=cur1; cur1=cur1.right; } return res;} //判断是否是完全二叉树 /** (1)层序遍历所有节点 (2)当前节点有右孩子,没有左孩子 false (3)当前节点不是左右孩子都有,则为叶节点,否则false */ public static boolean isCBT(Node head) { if(head==null) { return true; } Queue<Node>queue=new LinkedList<Node>(); boolean leaf=false; Node l=null; Node r=null; queue.offer(head); while(!queue.isEmpty()) { head=queue.poll(); l=head.left; r=head.right; if((leaf&&(l!=null||r!=null))||(l==null&&r!=null)) { return false; } if(l!=null) { queue.offer(l); } if(r!=null) { queue.offer(r); } else { leaf=true; } } return true; }public static void main(String []args){ /** 4 2 6 1 3 5 */ Node head=new Node(4); head.left=new Node(2); head.right=new Node(6); head.left.left=new Node(1); head.left.right=new Node(3); head.right.left=new Node(5); System.out.println(isBST(head)); System.out.println(isCBT(head));}}
阅读全文
0 0
- 判断二叉树是否是搜索二叉树和完全二叉树
- 判断一棵树是否是完全二叉树
- 判断是否是完全二叉树
- 判断是否是完全二叉树
- 判断一棵树是否是完全二叉树
- 判断是否是完全二叉树
- ~判断一棵树是否是完全二叉树~
- 判断一颗树是否是完全二叉树
- 判断一棵树是否是完全二叉树
- 判断一棵树是否是完全二叉树
- 判断一棵树是否是完全二叉树
- 判断一棵树是否是完全二叉树
- 判断一棵树是否是完全二叉树
- 判断一棵树是否是完全二叉树
- 判断一棵树是否是完全二叉树。
- 判断一个二叉树是否是完全二叉树
- 判断一棵二叉树是否是完全二叉树
- 判断二叉树是否是完全二叉树
- vue 循环出来的数据不能记录长度
- oracle 系统表空间满了
- 9. 面向对象 -- 多态、抽象、接口
- leetcode120 Triangle
- hrbust 病毒 并查集
- 判断二叉树是否是搜索二叉树和完全二叉树
- css设置元素水平垂直居中的方法
- eclipse如何重新编译项目
- Go Eclipse插件
- Hadoop之HDFS文件操作
- leetcode 134. Gas Station
- mt6735 “提示音和通知”中试听手机铃声时来电,来电铃声和预览铃声声音重叠
- 如何高效排查系统故障?一分钱引发的系统设计“踩坑”案例
- CentOS6.5系统双网卡绑定配置详解