判断一棵二叉树是否为AVL树
思路:AVL树是高度平衡的二叉搜索树,这里为了清晰说明,分别判断是否为搜索树,是否为平衡树。
struct TreeNode {struct TreeNode *left;struct TreeNode *right;int key; }; //这里先判断是否为二叉搜索树,其次判断是否为平衡的 bool IsAVL(TreeNode *root,int depth) {if (isBST(root)&&isBalance(root,&depth))return true;return false; }//判断是否为二叉搜索树 bool isBST(TreeNode *root) {if(root == NULL)return true;if (!isBST(root->left))return false;if (!isBST(root->right))return false;TreeNode *cur = root->left;if (cur != NULL){while(cur->right!=NULL)cur = cur->right;if(root->key < cur->key)return false;}TreeNode *cur = root->right;if (cur != NULL){while(cur->left!=NULL)cur = cur->left;if(root->key > cur->key)return false;}return true; }//判断是否平衡 bool isBalance(TreeNode *root,int *depth) {if (root == NULL){*depth = 0;return true;}int depthl,depthr;if(!isBalance(root->left,&depthl))return false;if(!isBalance(root->right,&depthr))return false;int diff = depthl - depthr;if(diff > 1 || diff < -1)return false;*depth = 1+(depthl>depthr?depthl:depthr);return true; }
本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/p/3969557.html ,如需转载请自行联系原作者
判断一棵二叉树是否为AVL树相关推荐
- python代码判断两棵二叉树是否相同
python代码判断两棵二叉树是否相同 给定两个二叉树,编写一个函数来校验它们是否相同.如果两个树在结构上相同,并且结点具有相同的值,则认为它们是相同的. 判断两个二叉树是否是相同的,相同的依据是 二 ...
- Python算法——判断两棵二叉树是否相等
要求: 如何判断两颗树是否相等?(两棵树相等是指这两课树有着相同的结构,并且在相同位置上的结点有相同的值) 分析: 如果两颗二叉树root1, root2相等, 那么root1和root2结点的值相同 ...
- 牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案
牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案 题解: 搜索二叉树满足以下性质: 1.非空左子树的所以键值小于其根节点的键值 2.非空右子树的所有键值大于其根节点的键值 ...
- 判断一棵二叉树是否为完全二叉树-Java
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net package live.every.day.Pro ...
- 判断一棵二叉树是否为平衡二叉树
1.先给出树节点信息 typedef struct tree{struct tree *lchild;struct tree *rchlid;int data; }tree,* Bitree; 2.原 ...
- 【面试】判断一棵二叉树是否为二叉排序树
一.描述 给定一棵二叉树,如何判断一棵树是否是二叉排序树.给出树结点定义如下 class TreeNode {int key;TreeNode left;TreeNode right;public T ...
- 判断两棵二叉树是否同构,三种实现方式(递归、队列、堆栈)
一.同构的概念: 给定两棵二叉树 T1 和 T2,如果T2可以通过若干次左右孩子互换就变成T1,那么我们称这两棵树是同构的 例1:下图两棵树同构,因为对T2,交换A左右孩子:交换B左右孩子,交换G左右 ...
- 判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)
平衡二叉树的解法:主要是求出二叉树的高度,若根节点的左子树的高度与右子树的高度差小于等于1,则表示该二叉树为平衡二叉树 public static class Node{public int valu ...
- 如何判断一棵二叉树是完全二叉树(1)
完全二叉树的定义: 一棵二叉树,除了最后一层之外都是完全填充的,并且最后一层的叶子结点都在左边. 一个直观的想法, 就是观察一棵完全二叉树,来分析它到底有什么特征. 方法1: 按层遍历二叉树, 从每层 ...
最新文章
- Atitit. Attilax企业框架 AEF的发展里程总结
- 解决geoserver跨域问题
- python可变参数和关键字参数位置_python的位置参数、默认参数、关键字参数、可变参数区别...
- Linux 最常用命令:简单易学,但能解决 95% 以上的问题
- 二叉搜索树(BST)?平衡二叉树(AVL)?
- Vue指令练习实例-学生信息录入
- HashSet和HashMap的区别
- 三流面试聊JDK,二流面试聊JVM,一流面试……
- 这4部有生之年必看的“教材级”纪录片,免费领取!
- TypeError: 'NoneType' object is not subscriptable
- C#中IEnumerableT.Distinct()将指定实体类对象用Lambda表达式实现多条件去重
- 阿里iconfont使用教程
- 【操作系统】实验四 主存空间的分配和回收
- 编码器分类及原理和测速应用(含代码)
- android 积分墙广告平台有哪些,积分墙平台有哪些(全面解读积分墙)
- 如何写一篇给天使投资人看的《商业计划书》?
- OpenCV中出现“Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000005C8ECFFA80 处。”的异常...
- App创业者分享:如何攒到你的1亿用户?(前期土豪推广,后期节操全碎)
- Win2003可用序列号(标准版与企业版)
- 关于Web 验证方法你知道几种