Java反轉二叉樹
// 二叉樹節點定義
public class BinaryTreefanzhuan {
class TreeNode{
int value;
TreeNode left;
TreeNode right;
}
// 遞迴
public static TreeNode invertNode(TreeNode root){
if (root == null) return null;
TreeNode temp = root.left;
root.left = invertNode(root.right);
root.right = invertNode(temp);
return root;
}
// 非遞迴
//交換左右節點後,將這個兩個節點放入佇列,繼續下一層交換
public static TreeNode invertNode2(TreeNode root){
if (root == null) return null;
Queue<TreeNode> nodeQueue = new LinkedList<TreeNode>();
while(!nodeQueue.isEmpty()){
TreeNode current = nodeQueue.poll();
TreeNode temp = current.left;
current.left = current.right;
current.right = temp;
if (current.left != null) nodeQueue.add(current.left);
if (current.right != null) nodeQueue.add(current.right);
}
return root;
}