题目:某规则二叉树的定义是:对于树中任意两个叶结点A、B,他们与根结点的距离分别是d1和d2,|d1-d2|<=1。请写出函数 bool isRuledTree(Node *root)的代码实现。如果该二叉树为规则树,则返回true,否则返回false。

思路:其实就是比较所有叶结点的深度,最大值和最小值之间相差不超过1,则为规则树,可以遍历所有的结点,如果碰到叶结点,记录该叶结点的深度到数组或任意什么结构中,然后找到这些记录中的最大值和最小值,求差即可。在我的代码中,用一个栈结构存储叶结点的深度。代码实现如下:

typedef struct Node{
int val;
Node *right;
Node *left;
} Node; stack<int> record; void isRuledTreeCore(Node *n, int depth){
if(n->left == NULL && n->right == NULL){
record.push(depth);
return;
}
if(n->left != NULL)
isRuledTreeCore(n->left,depth+);
if(n->right != NULL)
isRuledTreeCore(n->right,depth+);
return;
}
bool isRuledTree(Node *root){
if(root==NULL) return true; isRuledTreeCore(root,); int big=, small = INT_MAX;
while(!record.empty()){
int temp = record.top();
if(temp>big) big = temp;
if(temp<small) small = temp;
record.pop();
}
if(big-small>=- && big-small<=)
return true;
return false;
}

注意INT_MAX这个常量要#include<limits>,stack使用时要#include<stack>

[实战演练]蜻蜓FM2014年校招笔试题目 - 规则二叉树的更多相关文章

  1. EMC校招笔试题目

    ------------------------------------------------- 1,7×(1/7) = 1是什么率? 乘法运算满足结合律,交换律和分配率.这个题目用的应该是交换律. ...

  2. 美团点评2017校招笔试真题-算法工程师B

    美团点评2017校招笔试真题-算法工程师B 1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 C ...

  3. C++笔试题目大全(笔试宝典)(不断完善中)

    1.new . delete . malloc . free 关系 delete 会调用对象的析构函数 , 和 new 对应 free 只会释放内存, new 调用构造函数. malloc 与 fre ...

  4. # C/C++的笔试题目

    p,li { white-space: pre-wrap } # C/C++的笔试题目 + include<> 和include"" 的区别 + sizeof操作符与字 ...

  5. 汇顶科技&&硬件类笔试题目

    汇顶科技硬件类笔试题目,每年都有变化,但是题目类型都差不多.汇顶科技17年在南京地区大概招了20个左右吧,给的待遇还是不错的,工作地点上海深圳

  6. C/C++笔试题目

    1. C语言中无符号数与有符号数 unsigned ; ; printf( printf( ? 有符号数和无符号数在进行比较运算时(==,>=,<=,>,<),有符号数隐式的转 ...

  7. 九度OJ 1525 子串逆序打印 -- 2012年Google校园招聘笔试题目

    题目地址:http://ac.jobdu.com/problem.php?pid=1525 题目描述: 小明手中有很多字符串卡片,每个字符串中都包含有多个连续的空格,而且这些卡片在印刷的过程中将字符串 ...

  8. 某IT校招笔试

    前言 博主明天上午9点还有面试,今天突然看到某大牌IT公司笔试题目,必须做一下了 题目 1.假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数 A: h(K)=K/N; B: h(K) ...

  9. [笔试题目]使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍?

    [笔试题目] 使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍? StringBuffer 底层是依赖了一个字符数组才能存储字符 ...

随机推荐

  1. sql复杂查询

    内连接 左外连接 Left Outer Join On  ,无论右边是否匹配到,左边的数据都在 右外连接 Right Outer Join On ,无论左边是否匹配到,右边的数据都在 子查询: 将一个 ...

  2. openssl初步使用

    centos平台 md5.c #include <stdio.h> #include <string.h> #include <stdlib.h> //#inclu ...

  3. VB.NET and C# 差异

    VB.NET Program Structure C# Imports System Namespace Hello    Class HelloWorld       Overloads Share ...

  4. 关于syslog日志功能详解 事件日志分析、EventLog Analyzer

    关于syslog日志功能详解 事件日志分析.EventLog Analyzer 一.日志管理 保障网络安全 Windows系统日志分析 Syslog日志分析 应用程序日志分析 Windows终端服务器 ...

  5. 用python实现数学多元数学方程式计算

    题目:公鸡5元钱一只,母鸡3元钱一只,小鸡3只一块钱,其中公鸡,母鸡,小鸡都必须有,问公鸡,母鸡,小鸡各买多少只刚好凑足100元钱? 一:数学算术分析: x+y+z=100 5x+3y+z/3=100 ...

  6. NCBI News

    NCBI淘汰序列GI - 使用Accession.Version代替! 截至2016年9月,被称为“GI”的整数序列标识符将不再包括在NCBI支持的序列记录的GenBank,GenPept和FASTA ...

  7. kafka 支持发布订阅

    概述 一般消息队列的是实现是支持两种模式的,即点对点,还有一种是topic发布订阅者模式,比如ACTIVEMQ.KAFKA也支持这两种模式,但是实现的原理不一样. KAFKA 的消息被读取后,并不是马 ...

  8. Java查看项目目录以及导入项目

    1.查看项目目录 右击项目,选择properties,选择resource,查看location 2.导入已有项目 (1)右击项目 ,选择import (2)在弹出的窗口中选择Existing pro ...

  9. s7-200 PID控位

    只有加热模块,没有风扇,所以温度上冲达到5度左右 TITLE=程序注释 Network // 网络标题 // 初始化 LD SM0. LPS MOVW , VW500 MOVW , VW502 MOV ...

  10. CEdit控件[转]

    1.CButton.CEdit等从CWnd继承了重要的功能: 使用CWnd::SetWindowText和CWnd::GetWindowText可以设置和获得窗口或控件上的文本.CWnd::SetFo ...