博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
226 Invert Binary Tree 翻转二叉树
阅读量:4478 次
发布时间:2019-06-08

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

翻转一棵二叉树。

     4

    / \
   2   7
 / \  / \
1  3 6  9
转换为:

     4

    / \
   7    2
 / \    / \
9  6  3   1

详见:https://leetcode.com/problems/invert-binary-tree/

Java实现:

递归实现:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public TreeNode invertTree(TreeNode root) {        if(root==null){            return null;        }        TreeNode node=root.left;        root.left=invertTree(root.right);        root.right=invertTree(node);        return root;    }}

迭代实现:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public TreeNode invertTree(TreeNode root) {        if(root==null){            return null;        }        LinkedList
que=new LinkedList
(); que.offer(root); while(!que.isEmpty()){ TreeNode node=que.poll(); TreeNode tmp=node.left; node.left=node.right; node.right=tmp; if(node.left!=null){ que.offer(node.left); } if(node.right!=null){ que.offer(node.right); } } return root; }}

C++实现:

方法一:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode* invertTree(TreeNode* root) {        if(root==nullptr)        {            return nullptr;        }        TreeNode *node=root->left;        root->left=invertTree(root->right);        root->right=invertTree(node);        return root;    }};

方法二:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode* invertTree(TreeNode* root) {        if(root==nullptr)        {            return nullptr;        }        queue
que; que.push(root); while(!que.empty()) { TreeNode *node=que.front(); que.pop(); TreeNode *tmp=node->left; node->left=node->right; node->right=tmp; if(node->left) { que.push(node->left); } if(node->right) { que.push(node->right); } } return root; }};

  

转载于:https://www.cnblogs.com/xidian2014/p/8758253.html

你可能感兴趣的文章
poj 2349(最小生成树应用)
查看>>
python接口自动化测试二十五:执行所有用例,并生成HTML测试报告
查看>>
c# 指定的存储区提供程序在配置中找不到,或者无效
查看>>
最简陋的python数据
查看>>
第一堂java web课
查看>>
操作系统简介
查看>>
第1周小组博客作业--1703班06组
查看>>
vue项目中icon图标的完美引入
查看>>
C语言指针
查看>>
Java的安装
查看>>
0920 JSON数据 蓝懿
查看>>
Azure Cosmos DB 使用费用参考
查看>>
【嵌入式开发】写入开发板Linux系统-模型S3C6410
查看>>
C# 子线程与主线程通讯方法一
查看>>
006——修改tomacat的编码
查看>>
《C程序设计语言》笔记 (八) UNIX系统接口
查看>>
git常用命令
查看>>
Android必知必会-获取视频文件的截图、缩略图
查看>>
(转)理解Bitblt、StretchBlt与SetDIBitsToDevice、StretchDibits
查看>>
ViurtualBox配置虚拟机Linux的网络环境
查看>>