查看: 2173| 回复: 6
跳转到指定楼层
上一主题 下一主题
收起左侧

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

全局:

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

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、任何未尽之处,欢迎回报名帖提问,我会进一步作出修改

上一篇:【第四轮】6.28 - 7.4 Career Cup 3.7
下一篇:求问maxSubArray的DP解法
🔗
iFighting 2015-6-28 23:26:56 | 只看该作者
全局:
【解题思路】分治法:分别判断左右子树是否是平衡二叉树,如果不是直接返回-1,如果是返回子树的高度。
【时间复杂度】
O(N),N是节点的个数。
【空间复杂度】
O(1),只用到了额外的常数空间
【gist link】
https://gist.github.com/iFighting/e2cc0f35f820545d979f
【test case】(optional,如果觉得比较好,欢迎贴出来分享)

点评

感觉严谨来说,递归消耗的system stack也算空间复杂度,所以应该是O(h), h是树的高度。  发表于 2015-7-2 03:31
回复

使用道具 举报

全局:
第一次地里发,无比激动

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

点评

感觉严谨来说,递归消耗的system stack也算空间复杂度,所以应该是O(h), h是树的高度。  发表于 2015-7-2 03:31
回复

使用道具 举报

🔗
水逼一枚 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,如果觉得比较好,欢迎贴出来分享)
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-X0UHE  2015-7-7 03:10:56
【解题思路】
对每一个节点比对左树和右树高度,如果高度差大于阈值则不是平衡树
【时间复杂度】
O(n^2)
【空间复杂度】
O(n)
【gist link】
https://gist.github.com/alikewmk ... 1-checkbalance-java
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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