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;
}
Python实现
class TreeNode(object):
def __init__(self, value, left, right):
self.value = value
self.left = left
self.right = right
class BinaryTree(Object):
def __init__(self, value):
self.value = value
def invert(self, root):
if root == None:
return None
temp = root.left
root.left = self.invert(root.right)
root.right = self.invert(temp)
return root
def invert2(self, root):
if root == None:
return None
nodeQueue = Queue.Queue
nodeQueue.put(root)
while nodeQueue.not_empty:
cur = nodeQueue.get()
temp = cur.left
cur.left = cur.right
cur.right = temp
if cur.left != None:
nodeQueue.put(cur.left)
if cur.right != None:
nodeQueue.put(cur.right)
return root