思路: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树相关推荐

  1. python代码判断两棵二叉树是否相同

    python代码判断两棵二叉树是否相同 给定两个二叉树,编写一个函数来校验它们是否相同.如果两个树在结构上相同,并且结点具有相同的值,则认为它们是相同的. 判断两个二叉树是否是相同的,相同的依据是 二 ...

  2. Python算法——判断两棵二叉树是否相等

    要求: 如何判断两颗树是否相等?(两棵树相等是指这两课树有着相同的结构,并且在相同位置上的结点有相同的值) 分析: 如果两颗二叉树root1, root2相等, 那么root1和root2结点的值相同 ...

  3. 牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案

    牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案 题解: 搜索二叉树满足以下性质: 1.非空左子树的所以键值小于其根节点的键值 2.非空右子树的所有键值大于其根节点的键值 ...

  4. 判断一棵二叉树是否为完全二叉树-Java

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net package live.every.day.Pro ...

  5. 判断一棵二叉树是否为平衡二叉树

    1.先给出树节点信息 typedef struct tree{struct tree *lchild;struct tree *rchlid;int data; }tree,* Bitree; 2.原 ...

  6. 【面试】判断一棵二叉树是否为二叉排序树

    一.描述 给定一棵二叉树,如何判断一棵树是否是二叉排序树.给出树结点定义如下 class TreeNode {int key;TreeNode left;TreeNode right;public T ...

  7. 判断两棵二叉树是否同构,三种实现方式(递归、队列、堆栈)

    一.同构的概念: 给定两棵二叉树 T1 和 T2,如果T2可以通过若干次左右孩子互换就变成T1,那么我们称这两棵树是同构的 例1:下图两棵树同构,因为对T2,交换A左右孩子:交换B左右孩子,交换G左右 ...

  8. 判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)

    平衡二叉树的解法:主要是求出二叉树的高度,若根节点的左子树的高度与右子树的高度差小于等于1,则表示该二叉树为平衡二叉树 public static class Node{public int valu ...

  9. 如何判断一棵二叉树是完全二叉树(1)

    完全二叉树的定义: 一棵二叉树,除了最后一层之外都是完全填充的,并且最后一层的叶子结点都在左边. 一个直观的想法, 就是观察一棵完全二叉树,来分析它到底有什么特征. 方法1: 按层遍历二叉树, 从每层 ...

最新文章

  1. Atitit. Attilax企业框架 AEF的发展里程总结
  2. 解决geoserver跨域问题
  3. python可变参数和关键字参数位置_python的位置参数、默认参数、关键字参数、可变参数区别...
  4. Linux 最常用命令:简单易学,但能解决 95% 以上的问题
  5. 二叉搜索树(BST)?平衡二叉树(AVL)?
  6. Vue指令练习实例-学生信息录入
  7. HashSet和HashMap的区别
  8. 三流面试聊JDK,二流面试聊JVM,一流面试……
  9. 这4部有生之年必看的“教材级”纪录片,免费领取!
  10. TypeError: 'NoneType' object is not subscriptable
  11. C#中IEnumerableT.Distinct()将指定实体类对象用Lambda表达式实现多条件去重
  12. 阿里iconfont使用教程
  13. 【操作系统】实验四 主存空间的分配和回收
  14. 编码器分类及原理和测速应用(含代码)
  15. android 积分墙广告平台有哪些,积分墙平台有哪些(全面解读积分墙)
  16. 如何写一篇给天使投资人看的《商业计划书》?
  17. OpenCV中出现“Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000005C8ECFFA80 处。”的异常...
  18. App创业者分享:如何攒到你的1亿用户?(前期土豪推广,后期节操全碎)
  19. Win2003可用序列号(标准版与企业版)
  20. 关于Web 验证方法你知道几种

热门文章

  1. Mathematica 对曲线进行拟合
  2. C语言getch()函数学习
  3. Luogu2791 幼儿园篮球题【斯特林数,数学】
  4. Linux和Windows平台 动态库.so和.dll文件的生成
  5. 数据结构1_java---单链表的操作,约瑟夫问题
  6. ConcurrentHashMap 内部实现分析
  7. 另类vs2015+xamarin 的android界面乱码 解决
  8. 程序员有趣的面试智力题(转)
  9. Synbak 2.1 发布,系统备份工具
  10. 同软件多个线程设置不同ip_中学校园广播-中学IP网络广播系统解决方案