专栏 | 九章算法
网址 | www.jiuzhang.com
题目描述
给出一个字符序列,问该序列是否是一棵合法的二叉树的先序遍历?
找到一种不需要构造二叉树的方法。
For example:
"9,3,4,#,#,1,#,#,2,#,6,#,#"
是下面这颗二叉树的先序遍历。其中#代表空节点。
分析解答
通过观察上图中二叉树我们可以发现,一棵合法的二叉树去掉某个叶子节点后仍是合法的二叉树。在给出的字符序列中,叶子节点有很明显的特征,即叶子节点之后一定紧跟两个空节点#。通过不断的把number,#,#的子串缩成空节点#(把number,#,#子串替换为#),如果最后字符序列可以缩短到只有一个字符#,那它就是我们要找的合法的先序遍历了。
参考程序
面试官角度分析
此题可以用暴力搜索解决,但线性复杂度算法也不难想到。笔者认为正确的搜索算法可以达到hire,线性复杂度的算法可以达到strong hire。
相关练习题推荐
Binary Tree Preorder Traversal
Binary Tree Level Order Traversal
Binary Tree Postorder Traversal
推荐阅读
- 12 个 tips 教你搞定 onsite!
- 25 个 questions, 教你向面试官提问!
- 10 个 tips 教你搞定电面!
- 北美IT企业fulltime薪资大曝光
- IT 简历模板大放送 | 《如何写好技术简历》讲座精华总结
- 面试遇到做过的题怎么办?
- 冷冻期大揭秘 | Google、FB、Amazon、Linkedin冷冻期
- 面试前如何了解一家IT企业?试试官方技术博客!
- Google晋升机制 | 大公司如何升级打怪, 获得晋升?
欢迎关注我的微信公众号:九章算法(ninechapter)。
精英程序员交流社区,定期发布面试题、面试技巧、求职信息等
