二叉树的镜像(java版)

来源:互联网 发布:nginx负载均衡session 编辑:程序博客网 时间:2024/05/16 14:55

【题目描述】操作给定的二叉树,将其变换为源二叉树的镜像。

【输入描述】

这里写图片描述


【解题思路】
//1. 交换左子树和右子树

//递归public class Solution {    public void Mirror(TreeNode root) {        if(root == null){            return;        }        if(root != null){            if(root.left != null && root.right != null){                TreeNode tr = root.left;                root.left = root.right;                root.right = tr;            }else if(root.left != null && root.right == null){                TreeNode tr = root.left;                root.left = null;                root.right = tr;            }else if(root.left == null && root.right != null){                TreeNode tr = root.right;                root.right = null;                root.left = tr;            }else{            }        }        if(root.left != null){            Mirror(root.left);        }        if(root.right != null){            Mirror(root.right);        }    }}
//非递归import java.util.Stackpublic class Solution {    public void Mirror(TreeNode root) {        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 temp = node.left;                node.left = node.right;                node.right = temp;            }            if(node.left!=null){                stack.push(node.left);            }            if(node.right!=null){                stack.push(node.right);            }        }     }}
原创粉丝点击