输入一个二叉树,输出其镜像。
实现:
import java.util.Stack;/** * 反转二叉树 */public class ReverseBinaryTree { /** * 使用递归方法实现 * @param root 二叉树的根节点 * @return */ public static TreeNode getReverseTreeByDiGui(TreeNode root){ if(root == null){ return root; } //将左右节点互换位置 TreeNode n = root.getLeft(); root.setLeft(root.getRight()); root.setRight(n); //对该节点的左节点进行递归反转操作 getReverseTreeByDiGui(root.getLeft()); //对该节点的右节点进行递归反转操作 getReverseTreeByDiGui(root.getRight()); return root; } /** * 使用Stack实现 * @param root 二叉树的根节点 * @return */ public static TreeNode getReverseTreeByStack(TreeNode root){ if(root == null){ return root; } Stackstack = new Stack (); stack.add(root); while(!stack.isEmpty()){ //获取栈顶的元素 TreeNode n = stack.pop(); if(n.getLeft()!=null){ //将该node的左节点放入栈中,后面的循环中将这个左节点的左右节点互换 stack.push(n.getLeft()); } if(n.getRight()!=null){ //将该node的右节点放入栈中,后面的循环中将这个右节点的左右节点互换 stack.push(n.getRight()); } //当前这个节点的左右节点互换 TreeNode temp = n.getLeft(); n.setLeft(n.getRight()); n.setRight(temp); } return root; }}