推荐:数据科学课程和书籍清单以及培训讲座


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 801|回复: 6
收起左侧

[CareerCup] 【第四轮】6.28 - 7.4 Career Cup 4.1

[复制链接] |试试Instant~ |关注本帖
tailofjune 发表于 2015-6-28 22:40:00 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
本帖最后由 tailofjune 于 2015-6-28 22:41 编辑

4.1  Implement a function to check if a binary tree is balanced. For the purposes of this question, a balanced tree is defined to be a tree such that the heights of the two subtrees of any node never differ by more than one.

【解题思路】
【时间复杂度】
【空间复杂度】
【gist link】
【test case】(optional,如果觉得比较好,欢迎贴出来分享)


Notice:
1、记得在程序注释中表明自己算法的时间、空间复杂度
2、代码难懂之处加注释
3、每道题目有对应的帖子,除了贴解法,欢迎探讨各种follow up questions,集思广益
4、任何未尽之处,欢迎回报名帖提问,我会进一步作出修改
iFighting 发表于 2015-6-28 23:26:56 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
【解题思路】分治法:分别判断左右子树是否是平衡二叉树,如果不是直接返回-1,如果是返回子树的高度。
【时间复杂度】
O(N),N是节点的个数。
【空间复杂度】
O(1),只用到了额外的常数空间
【gist link】
https://gist.github.com/iFighting/e2cc0f35f820545d979f
【test case】(optional,如果觉得比较好,欢迎贴出来分享)
回复 支持 反对

使用道具 举报

lidongmeng0213 发表于 2015-6-29 20:09:29 | 显示全部楼层
关注一亩三分地微博:
Warald
第一次地里发,无比激动

[解题思路] dfs: 一遍dfs扫描,判断左右子树是否是balanced,如果是则更新高度为左右子树高度最大值加1,否则false;
[时间复杂度]
O(n), n个节点
[空间复杂度]
O(1)用来存储高度的变量
[github link]
https://github.com/lidongmeng/CC150/blob/master/4.1.cpp
回复 支持 反对

使用道具 举报

水逼一枚 发表于 2015-7-2 03:33:24 | 显示全部楼层
【解题思路】divide & conquer
【时间复杂度】
O(n), n为节点的个数。
【空间复杂度】
O(h), h为树的高度。
【gist link】
https://gist.github.com/zhangxin0804/ffa98b09481a1a9c22c1
【test case】(optional,如果觉得比较好,欢迎贴出来分享)
回复 支持 反对

使用道具 举报

alikewmk 发表于 2015-7-7 03:10:56 | 显示全部楼层
【解题思路】
对每一个节点比对左树和右树高度,如果高度差大于阈值则不是平衡树
【时间复杂度】
O(n^2)
【空间复杂度】
O(n)
【gist link】
https://gist.github.com/alikewmk ... 1-checkbalance-java
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-7-26 07:04

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表