【劍指offer】5.二叉樹的映象和列印

ConardLi發表於2019-02-16

二叉樹簡介

基本結構:

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;
    }

相關文章