剑指offer系列----镜像二叉树

来源:互联网 发布:数据库结构设计文档 编辑:程序博客网 时间:2024/05/29 03:08
package offer;/** * 操作给定的二叉树,将其变换为源二叉树的镜像。  */import java.util.Stack;public class Mirror {    public void Mirror(TreeNode root) {        //如果根节点为null,直接返回        if (root == null)            return;        //创建一个栈,用于存储根节点与子节点        Stack<TreeNode> stack = new Stack<TreeNode>();        //将根节点压入栈中        stack.push(root);        //当栈为空的时候,停止循环,也就是说栈中的节点都没有子节点了        while (!stack.isEmpty()) {            //将栈中存储的节点,进行出栈            TreeNode node = stack.pop();            //只要当前节点有子节点,就将左右节点进行交换            if (node.left != null || node.right != null) {                TreeNode rootLeft = node.left;                TreeNode rootRight = node.right;                node.left = rootRight;                node.right = rootLeft;            }            //如果当前node节点的左节点不为null,就将该节点的左节点压入栈中            //事实上,压入的就是之前的节点的右节点,因为已经交换过左右子树,所以现在是左节点            if (node.left != null)                stack.push(node.left);            //如果当前node节点的右节点不为null,就将该节点的右节点压入栈中            if (node.right != null)                stack.push(node.right);        }    }}
0 0
原创粉丝点击