判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)
平衡二叉树的解法:主要是求出二叉树的高度,若根节点的左子树的高度与右子树的高度差小于等于1,则表示该二叉树为平衡二叉树
public static class Node{public int value;public Node left;public Node right;public Node(int data){this.value = data;}
}
public static boolean isBalance(Node head){return getHeight(head, 0) ! = -1;
}public static int getHeight(Node head, int level){if(head == null){return level;}int lh = getHeight(head.left, level + 1);int rh = getHeight(head.right, level + 1);if(lh == -1 || rh == -1 || Math.abs(lh - rh) > 1){return -1;}
}
完全二叉树的解法:若最左的一个节点只有一个左子节点,则其余的同高度的节点都应该是叶节点
public static boolean isComplete(Node head){if(head == null){return true;}Queue<Node> queue = new LinkedList<Node>();boolean leaf = false;Node cur = null;Node l = null;Node r = null;queue.offer(head);while(!queue.isEmpty){cur = queue.poll();l = cur.left;r = cur.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;}}
}
搜索二叉树的解法:只需要中序遍历整棵二叉树,判断得到的节点序列是否为依次递增即可。
判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)相关推荐
- 数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树
数据结构与算法之判断一棵树是否为搜索二叉树.判断一棵树是否是完全二叉树 目录 判断一棵树是否为搜索二叉树 判断一棵树是否是完全二叉树 1. 判断一棵树是否为搜索二叉树 概念:搜索树就是中序遍历的结果是 ...
- 判断一棵树是否是搜索二叉树 判断一棵树是否是完全二叉树
package class_04;import java.util.LinkedList; import java.util.Queue; /*** * 判断一棵树是否是搜索二叉树* 判断一棵树是否是 ...
- 牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案
牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案 题解: 搜索二叉树满足以下性质: 1.非空左子树的所以键值小于其根节点的键值 2.非空右子树的所有键值大于其根节点的键值 ...
- 如何判断一棵树是否是满二叉树
判断一棵树是否是满二叉树 1.满二叉树定义 2.如何判断一棵树是否是满二叉树 3.代码 1.满二叉树定义 除最后一层无子节点外,其他层的所有节点都有两个子节点的二叉树就是满二叉树.如下图所示: 2.如 ...
- 判断一棵树是否为排序二叉树(二叉搜索树)
问题:判断一棵树是否为排序二叉树(二叉搜索树) 思路:二叉排序树的中序遍历为一递增的排序,若果不满足这一条件,则,不是二叉树 程序实现: #include <iostream> #incl ...
- 找到二叉树中符合搜索二叉树条件的最大拓扑结构
找到二叉树中符合搜索二叉树条件的最大拓扑结构 给定一棵二叉树的头节点 head,已知所有节点的值都不一样,返回其中最大的.且符合搜索二叉树 条件的拓扑结构的节点数.这里的拓扑结构是指,你可以在二叉树中 ...
- 判断一颗二叉树是否为搜索二叉树和完全二叉树
搜索二叉树:二叉树的中序遍历,在遍历的过程中,节点值都是递增的 class Node(object):def __init__(self,value):self.value = valueself.r ...
- 算法(63)-二叉树的递归-搜索二叉树-满二叉树-平衡二叉树-
目录 1.二叉树 2.搜索二叉树: 3.满二叉树: 4.平衡二叉树 1.二叉树 先.中.后序遍历 先序(中.左.右):1,2,4,5,3,6,7 中序(左.中.右):4,2,5,1,6,3 ...
- 算法-判断一颗树是否是搜索二叉树
定义:(二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不空,则右子树上所有结点的值均大于它的根结点 ...
最新文章
- Asp.net 内置对象
- oracle导出对象和数据,浅析Oracle对象和数据的导入导出
- android 自定义模板下载,android studio 自定义模板
- ASP.NET MVC的生命周期与网址路由
- 【渝粤题库】陕西师范大学200311常微分方程作业(高起本)
- 【WPF】如何保存RichTextBox的文本到数据库?以及如何对RichTextBox的Document做绑定?...
- Mark Cuban投资组合中60%为BTC,30%为ETH
- 前端能读取压缩包内容吗?_移动硬盘出现无法读取数据还能恢复吗?
- PhpStorm中如何使用FTP功能
- 单片机交通灯c语言实验报告,模拟交通灯单片机实验报告.doc
- Matlab求整数规划
- 【07月04日】指数估值排名
- 【利用编程来解决问题】——解数学题
- 详解Java 12新特性:switch表达式
- gis统计百分比_详细讲解ArcGIS数据统计及字段计算
- windows7交互式服务检测如何禁用?
- 【5GNR物理层】-NR物理层概述
- 2021-12-06 迈向程序猿的第四十三步
- 图灵机是最早的计算机,图灵机是现代计算机诞生的源头
- 1064mysql分区_如何解决mysql错误代码1064