博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer:面试题27. 二叉树的镜像
阅读量:3908 次
发布时间:2019-05-23

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

题目:二叉树的镜像

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

例如输入:

     4

   /   \
  2     7
 / \   / \
1   3 6   9
镜像输出:

     4

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

示例 1:

输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]

限制:

0 <= 节点个数 <= 1000

解题:

方法一:递归

先定义一个递归出口:当递归到null节点时,直接返回null。接着如果当前节点不是null节点,则其左右孩子调换。最后继续递归下去。解题思想是只考虑当前层孩子的调换,不用考虑下面层的事情。

/** * 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* mirrorTree(TreeNode* root) {        if(root == nullptr) return nullptr;        TreeNode* temp = root->left;        root->left = root->right;        root->right = temp;        mirrorTree(root->left);        mirrorTree(root->right);        return root;    }};

方法二:栈

class Solution {public:    TreeNode* mirrorTree(TreeNode* root) {        stack
s; s.push(root); while (!s.empty()) { TreeNode* node = s.top(); s.pop(); if (node == NULL) { continue; } swap(node->left, node->right); s.push(node->left); s.push(node->right); } return root; }};

 

转载地址:http://ubgen.baihongyu.com/

你可能感兴趣的文章
你可以把编程当做一项托付终身的职业
查看>>
细思极恐——你真的会写Java吗?
查看>>
Java并发面试,幸亏有点道行,不然又被忽悠了
查看>>
Java基础面试题收集整理
查看>>
SpringBoot基础篇Bean之条件注入@Condition使用姿势
查看>>
让你秒懂线程和线程安全,只需5步!
查看>>
Spring Boot学习之Logback和Log4j2集成与日志发展史
查看>>
Java注解(annotation)机制
查看>>
volatile关键字全面解析
查看>>
Java如何实现哈夫曼编码
查看>>
从源代码的角度理解Java设计模式的装饰模式
查看>>
系统架构中为什么要引入消息中间件?
查看>>
Java内存模型详解
查看>>
Java NIO之Selector
查看>>
SLF4J源码解析(一)
查看>>
Spring AOP用法详解
查看>>
记一位朋友斩获BAT技术专家Offer的面试经历
查看>>
Java并发编程之阻塞队列与Fork/Join框架
查看>>
并发、并行傻傻分不清楚?
查看>>
一个Java程序员该有的良好品质
查看>>