博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[CareerCup][Google Interview] Merge Two BST
阅读量:5250 次
发布时间:2019-06-14

本文共 717 字,大约阅读时间需要 2 分钟。

You have two BST, you have to merge them into a single BST, inplace and linear time.

 

 

其中,一位仁兄给出了一个非常漂亮的解答:

we could do it in O(m+n) (m, n sizes of both bsts)

1) Covert Tree1 in to circular doubly linked list. O(m)
Search for "tree list recursion problem" for more details.
2) Convert Tree2 in to circular doubly linked list O(n).
3) Merge Tree1, Tree2 O(m+n)
4) Convert the merged circular doubly linked list to Tree. O(m+n) (Middle node can be chosen as root to make tree balanced).

其中doubly link list,tree node的left和right正好作为链表的前后链接。

当然,要写好每一步其实也不容易的。

1)如何把tree转换为doubly link list

2) 如何merge两个list

3) 如何把doubly link list转换为tree

每一个都值得一写,等有时间了把代码写一下。

 

转载于:https://www.cnblogs.com/chkkch/archive/2012/11/01/2750393.html

你可能感兴趣的文章
MyBatis日记(三):戏说MyBatis配置文件
查看>>
$_POST和$GLOBALS['HTTP_RAW_POST_DATA'] 的区别
查看>>
类和结构
查看>>
遍历文件夹下所有dll的类
查看>>
Centos 7.6 部署 Jumpserver 1.5.0
查看>>
CSS3选择器(二)之属性选择器
查看>>
[转]Doing more with Outlook filter and SQL DASL syntax
查看>>
[转]事务(ADO.NET)
查看>>
[转]JS跨域总结
查看>>
c# 后台生成微信小程序带参数二维码
查看>>
python所有的魔术方法
查看>>
操作系统基础详解
查看>>
知识体系整理查漏补缺
查看>>
iOS语法糖 简单却不那么简单
查看>>
滑动窗口的最大值(队列的最大值)
查看>>
jQuery ajax - get() 方法
查看>>
eBay CEO作序推荐《web商务安全设计与开发宝典》:对称加密系统
查看>>
java之return解析
查看>>
装饰器传参图解
查看>>
C语言 · 素数判断
查看>>