二叉樹簡介
基本結構:
function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
}
二叉樹的前序、中序、後序遍歷的定義:
前序遍歷:對任一子樹,先訪問跟,然後遍歷其左子樹,最後遍歷其右子樹;
中序遍歷:對任一子樹,先遍歷其左子樹,然後訪問根,最後遍歷其右子樹;
後序遍歷:對任一子樹,先遍歷其左子樹,然後遍歷其右子樹,最後訪問根。
題目1 二叉樹的映象
1.1 題目描述
操作給定的二叉樹,將其變換為源二叉樹的映象。
輸入描述:
二叉樹的映象定義:源二叉樹
8
/
6 10
/ /
5 7 9 11
映象二叉樹
8
/
10 6
/ /
11 9 7 5
1.2 解題思路
遞迴交換二叉樹兩棵字樹的位置。
1.3 程式碼
function Mirror(root)
{
if(root){
const temp = root.right;
root.right = root.left;
root.left = temp;
Mirror(root.right);
Mirror(root.left);
}
}
題目2 從上往下列印二叉樹
2.1 題目描述
從上往下列印出二叉樹的每個節點,同層節點從左至右列印。
2.2 解題思路
1.藉助佇列先進先出的資料結構
2.讓二叉樹每層依次進入佇列
3.依次列印佇列中的值
2.3 程式碼
function PrintFromTopToBottom(root) {
const queue = [];
const print = [];
if(root != null){
queue.push(root);
}
while (queue.length > 0) {
const current = queue.shift();
print.push(current.val);
if (current.left) {
queue.push(current.left);
}
if (current.right) {
queue.push(current.right);
}
}
return print;
}