第15題 輸入一棵二叉樹,將該樹轉換為它的映象

2022-09-08 10:09:09 字數 1604 閱讀 4079

* 第15題:輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。

* 要求: 使用遞迴和迴圈兩種方法完成樹的映象轉換。

*/public

class

test015

mirrorbtreerecursion(btree.getleft());

mirrorbtreerecursion(btree.getright());

btnode temp = btree.getleft();

btree.setleft(btree.getright());

btree.setright(temp);

}//迴圈方式實現的二叉搜尋樹映象功能,類似於圖的bfs搜尋

public

static

void

mirrorbtreeloop(btnode btree)

btnode currentbtnode = null;

//使用arraylist建乙個佇列,儲存還未被映象的子樹

arraylistunmirroredbtrees = new arraylist();

unmirroredbtrees.add(btree);

//只要存在未被映象的子樹,就繼續迴圈

while (!unmirroredbtrees.isempty())

if (curright != null)

//左右交換

currentbtnode.setleft(curright);

currentbtnode.setright(curleft);}}

public

static

void

main(string args)

}執行結果

connected to

the target vm, address: '127.0.0.1:2313', transport: 'socket'

使用遞迴方法映象之前二叉搜尋樹的中序序列:567

891011

使用遞迴方法映象之後二叉搜尋樹的中序序列:11109

8765

使用迴圈方法映象之前二叉搜尋樹的中序序列:11109

8765

使用迴圈方法映象之後二叉搜尋樹的中序序列:567

891011

disconnected from

the target vm, address: '127.0.0.1:2313', transport: 'socket'

process finished with exit code 0

輸入一棵二叉樹,求樹的深度

題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。輸入 第一行輸入有n,n表示結點數,結點號從1到n。根結點為1。n 10。接下來有n行,每行有兩個個整型a和b,表示第i個節點的左右孩子孩子。a為左孩子,b為右孩子。當a...

翻轉一棵二叉樹

問題描述 翻轉一棵二叉樹 示例 輸入 4 2 7 1 3 6 9輸出 4 7 2 9 6 3 1 解法 1.用遞迴來解決 2.首先判斷根是不是空 遞迴出口 3.如果不是空則交換左右子數 4.對左子樹進行遞迴 5.對右子樹進行遞迴 definition for a binary tree node.c...

判斷一棵二叉樹是不是另一棵二叉樹的子樹

定義 父樹包含子樹的所有節點,注意,空樹不是任何數的子樹。父樹 a 子樹 b 解法 用遞迴來實現,從a樹的根節點開始,判斷其所有的節點是不是依次和樹b相同,如不同,遞迴呼叫函式,繼續判斷樹a當前節點的左子樹的所有節點或右子樹的所有節點是否和樹b所有節點相同,直到遍歷到父樹a的葉子節點,如果不是完全相...