【剑指offer】5.二叉树的镜像和打印

二叉树简介

基础构造:

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;
    }
    原文作者:ConardLi
    原文地址: https://segmentfault.com/a/1190000017891243
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞