资讯专栏INFORMATION COLUMN

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

villainhr / 1868人阅读

摘要:题目二叉树的镜像题目描述操作给定的二叉树,将其变换为源二叉树的镜像。代码题目从上往下打印二叉树题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路借助队列先进先出的数据结构让二叉树每层依次进入队列依次打印队列中的值代码

二叉树简介

基本结构:

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101034.html

相关文章

  • 【Leetcode】叉树专题(仅需【7道题】就可以带你入门叉树基本玩法)

    摘要:文章目录一剑指二叉树的镜像剑指二叉树的镜像思路递归二剑指对称的二叉树剑指对称的二叉树思路递归三剑指二叉树的深度剑指二叉树的深度思路递归四剑指平衡二叉树剑指平衡二叉树思路递归五相同的 ...

    lindroid 评论0 收藏0
  • 剑指offer】33.叉树镜像

    摘要:题目操作给定的二叉树,将其变换为源二叉树的镜像。再递归的对左子树,以及右子树进行翻转。比如左右有一个是代码执行到交换没啥问题执行到递归,左子树就结束掉了。 题目 操作给定的二叉树,将其变换为源二叉树的镜像。二叉树的镜像定义:源二叉树 8 / 6 10 / / 5 7 9 ...

    Charles 评论0 收藏0
  • PHPer面试必看:分门别类带你撸《剑指Offer》之叉树

    摘要:例如输入前序遍历序列和中序遍历序列,则重建二叉树并返回。操作给定的二叉树,将其变换为源二叉树的镜像。剑指中还有一道类似的变种题目,就是下面的这道,之字形遍历二叉树。最后下面的两道题目分别运用了二叉树先序中序遍历算法。 开篇 以下内容可能偏应试但很好理解,所以大家一定要坚持看下去,因为我们变强的过程注定孤独的,坚持下来就会看到明天的太阳。 回顾 showImg(https://user-...

    li21 评论0 收藏0
  • 剑指offer_叉树为某一个值的路径(栈保存路径,二叉树的前序遍历+表格模拟栈操作)

    摘要:在二叉树的三种遍历方式中先访问根节点为二叉树的前序遍历。其次考虑,题干要求返回的是二叉树节点路径,所以我们需要定义一个空间来存放路径。 原题链接 文章目录 思路...

    jlanglang 评论0 收藏0
  • 剑指offer_二叉树的打印合集(C++_上下打印.换行打印.之字打印_bfs+栈与队列+用表格模拟

    摘要:队列存放的是树节点的指针,其类型为打印完这个节点后将队列中的这个节点指向的左右子树入队,再把这个节点指针出队。注意一定要在有左右子树的时候在进队。选择二维数组形式返回,数组内以一维数组的形式储存。一行数据出队完毕后为。 ...

    glumes 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<