Solution 15:ツリーのミラーリング

856 ワード

問題の説明
ツリーをミラーに変換するBSTを入力します.
再帰と非再帰の2つの考え方を用いて解決することが要求される.
 
解決策
非再帰的BSTに基づく.
 
プログラム
public class MirrorOfBST {

public void toMirrorRec(TreeNode root) {

	if (root == null) {

		return ;

	}

	

	TreeNode left = root.left;

	TreeNode right = root.right;

	

	root.left = right;

	root.right = left;

	

	toMirrorRec(left);

	toMirrorRec(right);

}



public void toMirrorNoRec(TreeNode root) {

	if (root == null) {

		return ;

	}

	

	Queue<TreeNode> queue = new LinkedList<TreeNode>();

	queue.offer(root);

	

	while (!queue.isEmpty()) {

		TreeNode node = queue.poll();

		if (node != null) {

			TreeNode left = node.left;

			TreeNode right = node.right;

			

			node.left = right;

			node.right = left;

			

			queue.offer(right);

			queue.offer(left);

		}

	}

}

}