楼主: lvvvvv
跳转到指定楼层
上一主题 下一主题
收起左侧

FB 8/19 面经

无效楼层,该帖已经被删除
🔗
forestwn 2016-10-10 02:40:07 | 只看该作者
全局:
ksc_ 发表于 2016-10-10 02:03
确实遍历的方法不好想,求问设计题细节

@ksc_ 你中毒了吗……
回复

使用道具 举报

🔗
wxl3691 2016-10-11 04:37:26 | 只看该作者
全局:
感觉这题挺难的,不容易啊,加油楼主!!!
回复

使用道具 举报

🔗
aifer 2016-10-12 05:45:14 | 只看该作者
全局:
minggr 发表于 2016-10-10 01:51
Iteration如下,就是post-order traversal的iterative版本

贴个自己的code.用的是level traversal,找出最深层的head和tail节点,用一个map来track 节点到父节点的映射。
如果head 和tail相等,说明最深层就一个节点,如果不等,分别从map里向parent节点搜索,知道发现一个公共的节点即为LCA。
public int lcaBFS(TreeNode root) {
                if(root == null)        return -1;
                // <node -> parent node>
                Map<TreeNode, TreeNode> map = new HashMap<TreeNode, TreeNode>();

                TreeNode head = null, tail = null;        // the head and tail node in a level
                Queue<TreeNode> que = new LinkedList<TreeNode>();
                que.offer(root);
                map.put(root, null);
                while(!que.isEmpty()) {
                        head = null; tail = null;
                        int sz = que.size();
                        while(sz-- > 0) {
                                TreeNode curr = que.poll();
                                if(head == null)        head = curr;
                                if(sz == 0)        tail = curr;
                                if(curr.left != null) {
                                        map.put(curr.left, curr);
                                        que.offer(curr.left);
                                }
                                if(curr.right != null) {
                                        map.put(curr.right, curr);
                                        que.offer(curr.right);
                                }
                        }
                }

                while(head != tail){
                        head = map.get(head);
                        tail = map.get(tail);
                }
                return head.val;
        }

评分

参与人数 1大米 +5 收起 理由
UUOlidd + 5 欢迎来一亩三分地论坛!

查看全部评分

回复

使用道具 举报

🔗
xiaozhuxiaozhu 2016-11-10 13:31:10 | 只看该作者
全局:
zzh730 发表于 2016-8-23 06:19
是的,题里是多叉树,稍稍改下就好了

题目不是写着 binary tree么
回复

使用道具 举报

🔗
31415926 2016-11-14 12:51:01 | 只看该作者
全局:
Lilian1109 发表于 2016-8-23 03:16
这个貌似get到了, 贴一个我的代码, 是这么个意思吗?

代码不对吧。。。 [21,null,3,null, 4] 这个例子。
base case 有点小问题?
回复

使用道具 举报

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

本版积分规则

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