【编程练习】二叉树的反转,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实现
- Java二叉树的编程实现(数据结构)和正则表达式代码实现
- 【编程练习】单链表逆序Java实现
- [每日练习]C编程实现二叉树
- python编程练习---栈的实现
- 二叉树、list单向链表的实现( python版 Java版)-17-9-18
- Python编程练习:编程实现恺撒密码
- Spark机器学习入门·编程(scala/java/python)实现分析商店购买记录
- 反转二叉树----java实现
- python编程练习---一行代码实现计算器功能
- python编程练习---队列的实现
- python编程练习,实现9、9乘法口诀
- 【LeetCode-面试算法经典-Java实现】【226-Invert Binary Tree(反转二叉树)】
- JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
- JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
- 与二叉树有关的编程题的Java代码实现
- 【编程之美】java实现重建二叉树
- [每日练习]C编程实现句子中的单词反转
- Topcoder 练习小记,Java 与 Python 分别实现。
- 二叉树反转java实现