【IT笔试面试题整理】判断一个二叉树是否是平衡的?
【试题描述】定义一个函数,输入一个链表,判断链表是否存在环路
平衡二叉树,又称AVL树。它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差之差的绝对值不超过1。
问题:判断一个二叉排序树是否是平衡二叉树这里是二叉排序树的定义解决方案:根据平衡二叉树的定义,如果任意节点的左右子树的深度相差不超过1,那这棵树就是平衡二叉树。首先编写一个计算二叉树深度的函数,利用递归实现。
【参考代码】
方法一:
1 //返回树的最大深度
2 public static int Depth(Node root)
3 {
4 if (root == null)
5 return 0;
6 else
7 {
8 int ld = Depth(root.left);
9 int rd = Depth(root.right);
10 return 1 + (ld > rd ? ld : rd);
11 }
12 }
13
14 public static boolean isBalanced(Node root)
15 {
16 if(root == null)
17 return true;
18 int dis = Depth(root.left) - Depth(root.right);
19 if(dis >1 || dis < -1)
20 return false;
21 else
22 return isBalanced(root.left) && isBalanced(root.right);
23 }
方法二:
1 public static boolean isBalanced(Node root){
2 return (maxDepth(root) - minDepth(root) <=1);
3 }
4 private static int minDepth(Node root)
5 {
6 if(root == null)
7 return 0;
8 return 1 + Math.min(minDepth(root.left), minDepth(root.right));
9 }
10 private static int maxDepth(Node root)
11 {
12 if(root == null)
13 return 0;
14 return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
15 }
【IT笔试面试题整理】判断一个二叉树是否是平衡的?的更多相关文章
- 【IT笔试面试题整理】寻找二叉树两节点的最近的公共祖先
[试题描述] 求二叉树中任意两个节点的最近公共祖先也称为LCA问题(Lowest Common Ancestor). 二叉查找树 如果该二叉树是二叉查找树,那么求解LCA十分简单. 基本思想为:从树根 ...
- 【IT笔试面试题整理】给定二叉树先序中序,建立二叉树的递归算法
[试题描述]: 给定二叉树先序中序,建立二叉树的递归算法 其先序序列的第一个元素为根节点,接下来即为其左子树先序遍历序列,紧跟着是右子树先序遍历序列,固根节点已可从先序序列中分离.在中序序列中找到 ...
- 【IT笔试面试题整理】给定二叉树,给每层生成一个链表
[试题描述]定义一个函数,给定二叉树,给每层生成一个链表 We can do a simple level by level traversal of the tree, with a slight ...
- Java笔试面试题整理第八波
转载至:http://blog.csdn.net/shakespeare001/article/details/51388516 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第六波(修正版)
转载至:http://blog.csdn.net/shakespeare001/article/details/51330745 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第三波
转载至:http://blog.csdn.net/shakespeare001/article/details/51247785 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第二波
转载至:http://blog.csdn.net/shakespeare001/article/details/51200163 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第五波
转载至:http://blog.csdn.net/shakespeare001/article/details/51321498 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第四波
转载至:http://blog.csdn.net/shakespeare001/article/details/51274685 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
随机推荐
- python 开发学习
https://www.cnblogs.com/wj-1314/p/8476197.html
- oj错误之char型超出范围
在oj时遇到一个题 题目本身并不是很难,但在一个数据时出了错,刚开始一直没想通是哪里出了错 下面为源代码 #include <bits/stdc++.h> using namespace ...
- 压力测试 mac ab
apache ab:http://blog.chinaunix.net/uid-20382003-id-3032167.html 简单用法: ab -n 3000 -c 3000 http://www ...
- delphi中OleContainer的使用总结
1:定义流的header , OleContainer要求流中要有Headertype //流Header的结构 TStreamHeader = record Signature: Integer; ...
- 分形之谢尔宾斯基(Sierpinski)四面体
前面讲了谢尔宾斯基三角形,这一节的将对二维三角形扩展到三维,变成四面体.即将一个正四面体不停地拆分,每个正四面体可以拆分成四个小号的正四面体.由二维转变到三维实现起来麻烦了许多.三维的谢尔宾斯基四面体 ...
- C#调用接口注意要点
在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存cookie值,再进行其他接 ...
- 企业项目开发--本地缓存guava cache(2)
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. AdminCacheKey: package com.xxx.vo.userManagement; /** ...
- [leetcode.com]算法题目 - Symmetric Tree
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...
- iOS-项目开发1
FFPageControl 由于UIPageControl不能设置图片,而在实际开发中又经常遇到需要使用图片的情况,故仿照系统UIPageControl,重写了FFPageControl,以支持图片的 ...
- PHP 获取两个时间之间的月份
## 获取两个时间之间的间距时间 $s = '2017-02-05'; $e = '2017-07-20'; $start = new \DateTime($s); $end = new \DateT ...