【编程练习】二叉树的反转,Java和Python实现

来源:互联网 发布:php是什么货币单位 编辑:程序博客网 时间:2024/05/18 02:22

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
原创粉丝点击