平衡二叉树(剑指offer)知识迁移能力

平衡二叉树

  • 参与人数:1135时间限制:1秒空间限制:32768K
  • 通过比例:32.36%
  • 最佳记录:0 ms|0K

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

题目链接:http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

首先我们知道左右子树深度差不超过1,那么就是一棵平衡树。

由上一题求深度拓展  >>如何求深度<< 如果我们直接在上题上加一个判断条件,那么递归了很多重复的数。如何只递归一次呢,那么就来记录下每次递归的深度吧。

依照这样的思想,我把每次递归的左右深度通过&引用递归,那么就可以解决了。

<对了,这里空树是算平衡的还是。。。>

#include<stdio.h>
#include<algorithm>
using namespace std;
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};
class Solution {
public:
    bool IsBalanced_Solution(TreeNode* pRoot) {
       // if(!pRoot) return false;//空树是平衡树吗?
        int deep=0;
        return IsBalanced_Solution(pRoot,deep);
    }

    bool IsBalanced_Solution(TreeNode* pRoot,int &deep)
    {
        if(!pRoot)
        {
            deep=0;
            return true;
        }

        int left;
        int right;
        if(IsBalanced_Solution(pRoot->left,left) && IsBalanced_Solution(pRoot->right,right))
        {
            if(left-right<=1 && left-right>=-1)
            {
                deep=1+max(left,right);
                return true;
            }
        }
        return false;
    }
};
int main()
{
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-12 15:19:27

平衡二叉树(剑指offer)知识迁移能力的相关文章

平衡二叉树-剑指Offer

平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 思路 在计算二叉树的深度的基础上加以判断是否是平衡二叉树 用后序遍历,在遍历一个节点之前我们已经遍历了他的左右子树,在遍历每个节点的时候记录他的深度,当该子树是平衡二叉树的时候我们返回它的深度,若不是则返回-1 代码 public class Solution { public boolean IsBalanced_Solution(TreeNode root) { boolean result = false; if (ro

【Java】 剑指offer(55-2) 平衡二叉树

  本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一棵二叉树的根结点,判断该树是不是平衡二叉树.如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树. 思路 在(55-1) 二叉树的深度基础上修改:计算树的深度,树的深度=max(左子树深度,右子树深度)+1.在遍历过程中,判断左右子树深度相差是否超过1,如果不平衡,则令树的深度=-1,用来表示树不平衡.最终根据树的深度是否等于-1来确定是否

剑指Offer名企面试官精讲典型编程题pdf

下载地址:网盘下载 <剑指Offer:名企面试官精讲典型编程题(第2版)>剖析了80个典型的编程面试题,系统整理基础知识.代码质量.解题思路.优化效率和综合能力这5个面试要点.<剑指Offer:名企面试官精讲典型编程题(第2版)>共分7章,主要包括面试的流程,讨论面试每一环节需要注意的问题:面试需要的基础知识,从编程语言.数据结构及算法三方面总结程序员面试知识点:高质量的代码,讨论影响代码质量的3个要素(规范性.完整性和鲁棒性),强调高质量代码除完成基本功能外,还能考虑特殊情况并对

剑指Offer——银行考试

剑指Offer--银行考试 网申简历 一. 银行网申简历主要看哪些方面? 1.职业形象(30%),基本体现为证件照: 2.学校+成绩+校内表现(40%),体现为证书,成绩排名以及任职经历等: 3.校外实践(20%),主要体现在工作实习.实践活动和培训经历三点: 4.其他(10%),根据简历的完整性.准确性,进行综合评定. 二.网申简历应注意哪些方面? 1.考虑银行人的思维习惯(考虑岗位匹配度) 例:申请职位为柜员时,就应该在简历中体现出热情.乐于帮助他人.沉稳细心.认真大方,具有服务意识且对数字

剑指offer题目记录

1.如下为类型CMyString的声明,请为该类型添加赋值运算符函数. 2.设计一个类,我们只能生成该类的一个实例.   3.在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否函数该整数.   4.请实现一个函数,把字符串中的每个空格替换成"%20".例如输入"We are happy",则输出"We%20are%20happy".   4_1

剑指 Offer 题目汇总索引

剑指 Offer 总目录:(共50道大题) 1. 赋值运算符函数(或应说复制拷贝函数问题) 2. 实现 Singleton 模式 (C#) 3.二维数组中的查找 4.替换空格               时间:O(n) 空间:O(1) 5.从尾到头打印链表 6. 重建二叉树          && 二叉树的各种遍历(BFS,DFS,DLR,LDR,LRD) 7.用两个栈实现队列 8.旋转数组的最小数字 9.斐波那契数列第 n 项        时间O(lgn) 10.一个整数的二进制表示中

【剑指offer】和为定值的连续正数序列

转载请注明出处:http://blog.csdn.net/ns_code/article/details/27823291 题目描写叙述: 小明非常喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他立即就写出了正确答案是100.可是他并不满足于此,他在想到底有多少种连续的正数序列的和为100(至少包含两个数).没多久,他就得到还有一组连续正数和为100的序列:18,19,20,21,22.如今把问题交给你,你能不能也非常快的找出全部和为S的连续正数序列? Good Luck! 输入:

剑指Offer——知识点储备-数据库基础

剑指Offer--知识点储备-数据库基础 数据库 事务 事务的四个特性(ACID): ??原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability) - (1)原子性 整个事务中的所要操作要么全部提交成功,要么全部失败回滚. - (2)一致性 保证数据库中的数据操作之前和操作之后的一致性.(比如用户多个账户之间的转账,但是用户的总金额是不变的) - (3)隔离性 隔离性要求一个事务对数据库中数据的修改,在未提交完成前对于其它事务是

领导为什么不提拔你(送书《剑指Offer》)

在一个岗位上持续努力多年,领导也表示他很满意,但迟迟得不到晋升.什么原因呢? 这是我在分答上回答过的一个问题(感兴趣的可以点这里收听),也是很多人都遇到过的.原因大概有下面四点: 1. 比你现有职位更高的那些职位,一个萝卜一个坑,没有人走,你就无法挪动 很多企业的都是层级结构,想走管理路线的员工,沿着设定好的层级结构,一层一层往上攀升.跟夜晚登华山类似,就窄窄的一条道,前面的人不走,你就没法前进.所以你看很多政府单位.国企,有的人会在副处.副局的位置上蹲十年八年甚至几十年--绝望到要死要活--

《剑指offer》面试题39 二叉树的深度(java)

摘要: 今天翻到了<剑指offer>面试题39,题目二中的解法二是在函数的参数列表中通过指针的方式进行传值,而java是没有指针的,所以函数要进行改造.然而我翻了下别人的java版本(我就想看看有什么高大上的改造,毕竟要传递多个参数,是不是会涉及到那么一点点设计模式呢?),简直不能忍了,我只能用一句话形容:"一本正经的胡说八道",不过我就是喜欢看你胡说八道还迷之自信的样子. 下面吐槽一下这个版本的java代码: 1 //高效率的判断是否是一棵平衡二叉树 2 public b