《劍指offer》編程-二叉樹的鏡像

 《劍指offer》編程題-二叉樹的鏡像

#要求:操作給定的二叉樹,將其變換爲源二叉樹的鏡像。

#輸入描述:

二叉樹的鏡像定義:源二叉樹 
    	    8
    	   /  \
    	  6   10
    	 / \  / \
    	5  7 9 11
    	鏡像二叉樹
    	    8
    	   /  \
    	  10   6
    	 / \  / \
    	11 9 7  5

#分析:即交換樹的每一個子樹的左右節點。

思路1:由於樹結構的特點,我們一般利用遞歸來實現,即對於每個結點,如果其子女結點存在的話,就交換其值,以此遞歸。

思路2:用棧可以消除遞歸。我們用棧FILO的特點來實現數左右結點 左右互換的操作。

import java.util.*;
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
public class Solution {
   	 public void Mirror(TreeNode root) {
        if(root == null) return;
        Stack<TreeNode> stack = new Stack<TreeNode>();
        stack.push(root);
        while(!stack.empty()) {
            TreeNode node = stack.pop();
            if(node.left != null || node.right != null) {
                TreeNode nodeLeft = node.left;
                TreeNode nodeRight = node.right;
                node.left = nodeRight;
                node.right = nodeLeft;
            }
            if(node.left != null) stack.push(node.left);
            if(node.right != null) stack.push(node.right);
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章