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

16次阅读

共计 806 个字符,预计需要花费 3 分钟才能阅读完成。

二叉树简介
基本结构:
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;
}

正文完
 0