您的位置:首页 > 编程语言 > Python开发

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

2017-08-11 17:47 561 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉树 java python