5.30 Tree Traversal + Tree manipulation
- Binary Tree Preorder Traversal
題目:對(duì)一棵二叉樹(shù)進(jìn)行前序遍歷,并將結(jié)果存在一個(gè)List 當(dāng)中
思路:使用遞歸
細(xì)節(jié):
對(duì)于遞歸版本:注意preorderTraversal() function 返回的是一個(gè)List, 所以不正直接用 res.add(root.val), preorderTraversal(root.left), preorderTraversal(root.right)來(lái)直接遍歷
對(duì)于非遞歸版本:使用stack數(shù)據(jù)結(jié)構(gòu)來(lái)輔助遍歷,根左右的遍歷順序 對(duì)于棧操作需要反向按照根右左的順序來(lái)壓入棧
- Lowest Common Ancestor of a Binary Tree
LCA
思路: divide and conquer
什么時(shí)候返回 root? -> (root == p || root == q)
什么時(shí)候返回 left ? -> left != null && right == null
什么時(shí)候返回 right ? -> right != null && left == null
- Lowest Common Ancestor of a Binary Search Tree
要利用BST的特性來(lái)提高搜索過(guò)程的效率
轉(zhuǎn)載于:https://www.cnblogs.com/kong-xy/p/9114651.html
總結(jié)
以上是生活随笔為你收集整理的5.30 Tree Traversal + Tree manipulation的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【转】Java里如何实现线程间通信
- 下一篇: 消息队列的四大典型使用场景