二叉树(14)----由前序遍历和中序遍历重建二叉树,递归方式
生活随笔
收集整理的這篇文章主要介紹了
二叉树(14)----由前序遍历和中序遍历重建二叉树,递归方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
相關鏈接:
鏈表總結----鏈表面試題合集
?
二叉樹----二叉樹面試題合集
1、二叉樹定義
typedef struct BTreeNodeElement_t_ {void *data; } BTreeNodeElement_t;typedef struct BTreeNode_t_ {BTreeNodeElement_t *m_pElemt;struct BTreeNode_t_ *m_pLeft;struct BTreeNode_t_ *m_pRight; } BTreeNode_t;二、依據前序遍歷序列和中序遍歷序列重建二叉樹
算法說明:
由中序遍歷序列可知,第一個節點是根節點,
由前序遍歷序列可知,第一個節點是根節點的左子樹節點,并且前序遍歷中,根節點左邊是左子樹,右邊是右子樹,因此通過中序遍歷的根節點能夠確定的是:
? ? 根節點在前序遍歷中的位置(通過遍歷前序遍歷序列,比較每個節點與中序遍歷中的第一個節點即根節點可知);
? ? 左子樹的節點數,由于一旦找到前序遍歷中根節點的位置,就找到左右子樹的分界點,也就是說,前序遍歷中根節點左邊的都是左子樹節點,能夠通過遍歷知道左子樹的節點數;
? ? 相同,右子樹的節點數也能夠確定。
通過以上確定的信息,能夠劃分出前序遍歷中的左右子樹節點數,根節點位置;因此,以下就是進行求根節點左節點和右節點,而依據上述劃分,能夠知道左子樹前序和中序序列起始位置以及長度、右子樹前序和中序序列起始位置以及長度,這樣能夠遞歸依照上述方式相同獲得左右子樹的根節點。
通過遞歸能夠求得整個樹的結構。
轉載于:https://www.cnblogs.com/bhlsheji/p/4303060.html
總結
以上是生活随笔為你收集整理的二叉树(14)----由前序遍历和中序遍历重建二叉树,递归方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库系列之T-SQL(存储过程)
- 下一篇: 【POJ】【2975】Nim