PAT甲级1020 Tree Traversals:[C++题解]树的遍历、由中序序列和后序序列递归建树
生活随笔
收集整理的這篇文章主要介紹了
PAT甲级1020 Tree Traversals:[C++题解]树的遍历、由中序序列和后序序列递归建树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 題目分析
- 題目鏈接
題目分析
題意重述:給定一棵二叉樹的后序遍歷序列和中序遍歷序列,讓求層次遍歷的序列。
分析:
后序遍歷:先 左子樹、右子樹 ,最后再遍歷根結點。
中序遍歷:先左子樹,再根結點,然后是右子樹。
給定中序序列和后續序列,便可以唯一確定這棵二叉樹的形狀。
由于后序遍歷最后遍歷根結點,所以最后一個就是根結點。 找到根結點的值,我們就可以在中序序列中找到根結點,從而把中序序列分成左子樹、根結點、右子樹三部分。 這三部分也可以在后序序列中找到對應的部分。
然后對于后序序列的各個部分,遞歸上面這個過程,先找到這個部分的根結點,再對應到中序序列,把中序序列的這一部分再分成左子樹、根結點、右子樹三部分……
這里需要用到hash表l和r,分別用來存一個結點的左兒子 和右兒子。這樣查找某結點是否存在兒子,就方便很多。
ac代碼
題目鏈接
PAT甲級1020 Tree Traversals
總結
以上是生活随笔為你收集整理的PAT甲级1020 Tree Traversals:[C++题解]树的遍历、由中序序列和后序序列递归建树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT甲级1004 Counting L
- 下一篇: 并查集板子:acwing836. 合并集