二叉树的反转,递归实现和非递归实现。
2016-03-05 19:38
330 查看
package com.alg; import java.util.Stack; /** * Created by lchli on 2016/3/5. */ public class BTreeRevert { public static class Node { public Node left; public Node right; public Object data; } /** * 递归实现。 * * @param root */ public static void recusiveRevert(Node root) { if (root == null) { return; } swap(root); recusiveRevert(root.left); recusiveRevert(root.right); } /** * 非递归实现。 * * @param root */ public static void stackRevert(Node root) { if (root == null) { return; } Stack<Node> stack = new Stack<>(); stack.push(root); while (!stack.isEmpty()) { Node current = stack.pop(); swap(current); if (current.left != null) { stack.push(current.left); } if (current.right != null) { stack.push(current.right); } } } private static void swap(Node root) { Node tmp = root.left; root.left = root.right; root.right = tmp; } /** * test.前序输出。 * * @param root */ public static void preorderOutput(Node root) { if (root == null) { return; } System.out.print(root.data); preorderOutput(root.left); preorderOutput(root.right); } }
相关文章推荐
- 【二叉树】二叉树反转【Add to List 226. Invert Binary Tree】
- 226. Invert Binary Tree
- leetcode-226 Invert Binary Tree
- 关于centos7中使用rpm方式安装mysql5.7版本后无法使用root登录的问题
- 编译原理--概论
- LINUX内核分析第二周学习总结——操作系统是如何工作的
- python安装mysqldb
- 【模板】(未完成)AVL
- 前端面试内容汇总
- dispatch_source
- 深度学习入门学习:Multi-view Face Detection Using Deep Convolutional Neural Networks
- Android系统镜像改造指南
- Java基础之重生之路
- 算两个日期相差多少天,杭电1201(18岁生日多少天)类似
- bootstrap table 服务器端分页例子分享
- 软件测试之一——曾经遇到的bug
- OTG 接口烧写最小Linux的方法
- 杭电1019
- SVN学习
- 方阵的特征值和特征向量