树,森林,二叉树的互相转换
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                树,森林,二叉树的互相转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                樹、森林到二叉樹的轉換
將樹轉換為二叉樹
 樹中每個結點最多只有一個最左邊的孩子(長子)和一個右鄰的兄弟。按照這種關系很自然地就將樹轉換成相應的二叉樹:
- 在所有兄弟結點之間加一連線
 - 對每個結點,除了保留與其長子的連線外,去掉該結點與其他孩子的連線
 
下面(a)圖所示的樹可轉換為?圖所示的二叉樹。
由于樹根沒有兄弟,故樹轉化為二叉樹后,二叉樹的根結點的右子樹必為空。
將一個森林轉換為二叉樹
- 將森林中的每棵樹變為二叉樹
 - 因為轉換所得的二叉樹的根節點的右子樹均為空,故可將各二叉樹的根節點視為兄弟從左至右連在一起,就形成了一棵二叉樹
 
下圖中,左邊包含三棵樹的森林可轉換為右邊的二叉樹。
二叉樹到樹、森林的轉換
把二叉樹轉換到樹和森林的方式是:若結點x是雙親y的左孩子,則把x的右孩子,右孩子的右孩子,…,都與y用連線連起來,最后去掉所有雙親到右孩子的連線
下圖的森林就是由例2中二叉樹轉換成的。
例題
將森林轉換為對應的二叉樹,若在二叉樹中,結點u是結點v的父結點的父結點,則在原來的森林中,u和v可能具有的關系是: 1.父子關系; 2. 兄弟關系; 3. u的父結點與v的父結點是兄弟關系A.只有2 B.1和2 C.1和3 D.1、2和3B
 解析:
 1.父子關系成立
 
 2.兄弟關系成立
 3.u的父節點與v的父節點是兄弟關系不成立
- 將森林轉換為二叉樹的第一步是將每棵樹轉變為二叉樹:則第一步是在所有兄弟結點之間加一根線,第二步對每個結點,除保留與長子的連線,去掉該結點與其他孩子的連線;則若u父親與v父親是兄弟關系,必連線成為父子,由此u至多為v的父親的兄弟
 
總結
以上是生活随笔為你收集整理的树,森林,二叉树的互相转换的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 孕妇能吃板蓝根吗
 - 下一篇: 6-23 分离链接法的删除操作函数 (2