輸入一個二叉樹,輸出其鏡像。java
實現:node
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; } Stack<TreeNode> stack = new Stack<TreeNode>(); 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; } }