题目
操作给定的二叉树,将其变换为源二叉树的镜像。
1.思路
(1)借助队列,完成二叉树的层次遍历;
(2)在遍历过程中,每遇到一个节点,就将它的左右子树的根结点入队,然后进行互换;
(3)这样就能保证每一个结点的左右子树都被镜像了一次,当遍历结束时,整个二叉树就被镜像了。
2.代码(Java实现)
import java.util.LinkedList;
import java.util.Queue;
public class Main {
// 这里提供一个简单的测试样例
// 2
// / \
// 1 3
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution solution = new Solution();
TreeNode root = new TreeNode(2);
root.left = new TreeNode(1);
root.right = new TreeNode(3);
solution.Mirror(root);
System.out.println(root.val);
System.out.println(root.left.val);
System.out.println(root.right.val);
}
}
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
class Solution {
public void Mirror(TreeNode root) {
if (root != null) {
// 层次遍历 逐层镜像
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
while (!queue.isEmpty()) {
TreeNode p = queue.poll();
if (p.left != null) {
// 左子树不空则入队
queue.add(p.left);
}
if (p.right != null) {
// 右子树不空则入队
queue.add(p.right);
}
// 将当前访问的结点的左右子树进行镜像
TreeNode tmp = p.left;
p.left = p.right;
p.right = tmp;
}
}
}
}
苏大计算机考研,数据结构曾经考过原题
本文作者:
whtli
本文链接: https://hexo.whtli.cn/archives/1a194623.html
版权声明: 遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
本文链接: https://hexo.whtli.cn/archives/1a194623.html
版权声明: 遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。