博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法---反转二叉树
阅读量:6526 次
发布时间:2019-06-24

本文共 1438 字,大约阅读时间需要 4 分钟。

hot3.png

输入一个二叉树,输出其镜像。

b5b008e3595c7cd4b57ac31c380da0765c7.jpg

实现:

import java.util.Stack;/** *  反转二叉树 */public class ReverseBinaryTree {    /**     *  使用递归方法实现     * @param root 二叉树的根节点     * @return     */    public static TreeNode getReverseTreeByDiGui(TreeNode root){        if(root == null){            return root;        }        //将左右节点互换位置        TreeNode n = root.getLeft();        root.setLeft(root.getRight());        root.setRight(n);        //对该节点的左节点进行递归反转操作        getReverseTreeByDiGui(root.getLeft());        //对该节点的右节点进行递归反转操作        getReverseTreeByDiGui(root.getRight());        return root;    }    /**     *  使用Stack实现     * @param root 二叉树的根节点     * @return     */    public static TreeNode getReverseTreeByStack(TreeNode root){        if(root == null){            return root;        }        Stack
stack = new Stack
(); stack.add(root); while(!stack.isEmpty()){ //获取栈顶的元素 TreeNode n = stack.pop(); if(n.getLeft()!=null){ //将该node的左节点放入栈中,后面的循环中将这个左节点的左右节点互换 stack.push(n.getLeft()); } if(n.getRight()!=null){ //将该node的右节点放入栈中,后面的循环中将这个右节点的左右节点互换 stack.push(n.getRight()); } //当前这个节点的左右节点互换 TreeNode temp = n.getLeft(); n.setLeft(n.getRight()); n.setRight(temp); } return root; }}

 

转载于:https://my.oschina.net/u/3765527/blog/1829024

你可能感兴趣的文章
RedHat linux YUM本地制作源
查看>>
apache端口占用问题
查看>>
本地Office Project计划表同步到SharePoint2013任务列表的权限问题
查看>>
Windows2008 R2 GAC权限问题
查看>>
洛谷——P1469 找筷子
查看>>
几句话就能让你明白:网络地址转换(NAT)
查看>>
springboot项目自定义注解实现的多数据源切换
查看>>
如何用javascript正则表达式验证身份证号码是否合法
查看>>
ccf 201803-1 跳一跳(Python实现)
查看>>
特此说明
查看>>
使用flume替代原有的scribe服务
查看>>
用脚本来定制ESXI安装镜像
查看>>
微软企业级加解密解决方案MBAM架构
查看>>
没有苦劳,只有功劳!
查看>>
基于ThinkPHP写的一个简单的CMS系统
查看>>
笔记——搭建简易NFS服务
查看>>
Exchange 2010 DAG local and Site DR/Failover and Fail back
查看>>
LigerUI - 树表格的数据来自Server
查看>>
认证技术概述
查看>>
制作Windows Server 2003/08 image详细步骤与OpenStack介绍
查看>>