算法与数据结构1800题 树和二叉树
生活随笔
收集整理的這篇文章主要介紹了
算法与数据结构1800题 树和二叉树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
D
先訪問右子樹,然后訪問左子樹 1 + 2 + 4 + 8 + 16 + 32 + 242 = 111
而不是
1 + 2 + 4 + 8 + 16 + 24 + 242
雖然是有8個葉子節點,但是第六層,在滿足做多節點的情況下,一定是滿的. B
對于二叉樹中的D和E,原來是父子節點關系,現在是兄弟節點關系
對于二叉樹中的父子關系,森林中的父節點之間是兄弟關系,這樣的點 D
二叉樹的線索化(前序,中序,后序),就是將空余指針,指向前驅或者后繼.如狗沒有前驅,就指向NULL
或者,使用畫圖分析法,不過容易錯
正確答案:A
1)將N個節點當做N棵樹,構成森林
2)從N個節點中選擇兩個最小的節點構成一棵樹,將新節點改變為兩節點之和,然后繼續從改變后的序列中選擇最小的兩個構成樹
3)注意:構成樹的時候,左節點要小于右節點
如果形成的樹不是連續的在一棵樹上進行增加,那么可以放在樹的左側,也可以放在樹的右側
C
C
本題通過列舉法來解題 二叉樹遍歷的規律:
前序遍歷與后序遍歷序列相反的二叉樹是高度等于節點數的二叉樹,或者說只有一個葉子節點的二叉樹.或者說分支節點之多只有左側子女或者右子女的二叉樹.
中序遍歷的第一個節點是二叉樹最左側的節點
不會 二叉樹的規律:
1,二叉樹先序遍歷序列第一個節點一定是根節點
2,二叉樹的先序遍歷第二個節點,要么是左子樹根節點,要么是右子樹根節點(此時根節點的左子樹必須為空,其余的所有點掛載右子樹節點上)
3,二叉樹的后序遍歷的最后一個節點一定是根節點
4,二叉樹的倒數第二個節點要么是右子樹,要么是左子樹根節點(此時右子樹為空,其余的所有點掛在右子樹節點上)
5,如果先序遍歷和后序遍歷序列某部分序列相反,如ab與ba,則說明ab與ba一定在兩個層次上
先訪問右子樹,然后訪問左子樹 1 + 2 + 4 + 8 + 16 + 32 + 242 = 111
而不是
1 + 2 + 4 + 8 + 16 + 24 + 242
雖然是有8個葉子節點,但是第六層,在滿足做多節點的情況下,一定是滿的. B
二叉樹轉為森林:
森林轉二叉樹:
對于二叉樹中的B和D,原來是父子節點關系,對應于森林中還是父子節點關系對于二叉樹中的D和E,原來是父子節點關系,現在是兄弟節點關系
對于二叉樹中的父子關系,森林中的父節點之間是兄弟關系,這樣的點 D
二叉樹的線索化(前序,中序,后序),就是將空余指針,指向前驅或者后繼.如狗沒有前驅,就指向NULL
或者,使用畫圖分析法,不過容易錯
正確答案:A
對于A:哈夫曼樹不一定是完全二叉樹,可以通過舉例法來進行證明
對于B:由于哈夫曼樹的構造過程,以及可以通過舉例法(構造1,2,3,4,5,6的哈夫曼樹),發現在構造時,都是兩個節點合并成一個節點,整顆樹,要么是度為2,要么是度為0,不可能出現度為1
對于C:由于構造哈夫曼樹的第一步就是選擇兩個最小的節點組合成樹,所以最小的節點一定是兄弟節點
對于D:可以通過舉例法來進行證明(1,2,1000,1001)
1)將N個節點當做N棵樹,構成森林
2)從N個節點中選擇兩個最小的節點構成一棵樹,將新節點改變為兩節點之和,然后繼續從改變后的序列中選擇最小的兩個構成樹
3)注意:構成樹的時候,左節點要小于右節點
如果形成的樹不是連續的在一棵樹上進行增加,那么可以放在樹的左側,也可以放在樹的右側
C
C
本題通過列舉法來解題 二叉樹遍歷的規律:
前序遍歷與后序遍歷序列相反的二叉樹是高度等于節點數的二叉樹,或者說只有一個葉子節點的二叉樹.或者說分支節點之多只有左側子女或者右子女的二叉樹.
中序遍歷的第一個節點是二叉樹最左側的節點
不會 二叉樹的規律:
1,二叉樹先序遍歷序列第一個節點一定是根節點
2,二叉樹的先序遍歷第二個節點,要么是左子樹根節點,要么是右子樹根節點(此時根節點的左子樹必須為空,其余的所有點掛載右子樹節點上)
3,二叉樹的后序遍歷的最后一個節點一定是根節點
4,二叉樹的倒數第二個節點要么是右子樹,要么是左子樹根節點(此時右子樹為空,其余的所有點掛在右子樹節點上)
5,如果先序遍歷和后序遍歷序列某部分序列相反,如ab與ba,則說明ab與ba一定在兩個層次上
轉載于:https://juejin.im/post/5b7974fd51882542d416b101
總結
以上是生活随笔為你收集整理的算法与数据结构1800题 树和二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于OpenGL源码下载说明
- 下一篇: 解决extremeComponents中