【剑指offer】二叉树的镜像】的更多相关文章

题目:操作给定的二叉树,将其变换为源二叉树的镜像. 思路:前序(根左右的顺序)遍历一棵树,在存储的时候将其左右树进行交换,最后按照处理后的树还原,即得到其镜像. /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ //前序遍历这棵树的每个结点,如果遍历的节点有子结点,就交换其子结…
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 思路: 直接一个中间指针,递归,交换左右节点,节点为叶子节点的时候返回. AC代码: class Solution { public: void Mirror(TreeNode *pRoot) { if(pRoot==NULL) return ; TreeNode *temp;…
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 牛客网链接 js代码 /* function TreeNode(x) { this.val = x; this.left = null; this.right = null; } */ function Mirror(root) { // write code here if (…
剑指Offer--二叉树 前言 数据结构通常是编程面试中考察的重点.在参加面试之前,应聘者需要熟练掌握链表.树.栈.队列和哈希表等数据结构,以及它们的操作.本片博文主要讲解二叉树操作的相关知识,主要包括二叉树的建立.遍历方法的循环和递归写法. 二叉树是树形结构的一个重要类型.许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要. 二叉树的java实现 首先创建一棵二叉树如下图,然后对这颗二叉树进行遍…
❗❗ 必看经验 在博主刷题期间,基本上是碰到一道二叉树就不会碰到一道就不会,有时候一个下午都在搞一道题,看别人解题思路就算能看懂,自己写就呵呵了.一气之下不刷了,改而先去把二叉树的基础算法给搞搞懂,然后又去把剑指offer里所有关于二叉树的题目挑了出来做,越不会就越把自己往奔溃的边缘虐.还别说,这一搞,神清气爽.也怪之前什么基础准备都没有就直接去题库里挑战题目了. 在这里想说的是,在刷题之前一定得先有自己的知识储备,比如说最起初的数据结构总得会吧,或者说基础的数据结构里都有些啥啥时重点之类的.别…
剑指offer 牛客网 二叉树中和为某一个值的路径 # -*- coding: utf-8 -*- """ Created on Tue Apr 9 15:53:58 2019 @author: Administrator 题目: 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径. 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. (注意: 在返回值的list中,数组长度大的数组靠前) 思路: 采用递归的思路 "&q…
剑指offer 牛客网 二叉树的层序遍历 # -*- coding: utf-8 -*- """ Created on Tue Apr 9 09:33:16 2019 @author: Administrator 层序遍历:从上往下打印出二叉树的每个节点,同层节点从左至右打印. 1 / \ 2 3 / \ / \ 4 5 6 7 返回列表:[1,2,3,4,5,6,7] """ # -*- coding:utf-8 -*- class TreeN…
时间限制:1秒 空间限制:32768K 热度指数:238655 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(…
题目: 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 分析: 求二叉树的镜像,实际上也就是将一个二叉树左右翻转. 从根节点开始将左右指针互换,再对左右子树递归执行下去即可. 8 / \ 6 10 / \ / \ 5 7 9 11 ↓ 8 / \ 10 6 / \ / \ 9 11 5 7 ↓ 8 / \ 10 6 / \ /…
题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.     思路: 递归,然后深搜,因为题目定义的,是从根到叶子节点的才算一条路径,所以,搜索到叶子节点的时候return ,每次把sum-当前节点的值,传给dfs函数.   class Solution { public: vector<vector<int> > ans; vector<int> path; vector…
/************************************************************************* > File Name: 17_MirrorOfBinaryTree.cpp > Author: Juntaran > Mail: JuntaranMail@gmail.com > Created Time: 2016年08月30日 星期二 17时10分03秒 *************************************…
题目描述: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 分析: 如果该结点存在右子树,那么返回右子树的最左结点. 如果该结点不存在右子树,那么如果该结点不是其父结点的最右结点,那么返回父结点:否则一直找到最大子树的最右结点是该结点,那么返回该最大子树的根结点的父结点. 代码: /* struct TreeLinkNode { int val; struct TreeLinkNode *left; stru…
题目描述: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 分析: 二叉树的深度等于其左子树的深度和右子树的深度两个中最大的深度加一. 代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class…
题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 分析: 先序遍历二叉树,找到二叉树中结点值的和为输入整数的路径,加入到路径数组中. 注意:路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.必须到达叶子结点. 这个问题是可以深度优先搜索,也可以广度优先搜索. 深度优先搜索代码: /* struct TreeNode { int val; struct TreeNode *le…
地址 https://www.acwing.com/problem/content/66/ https://www.acwing.com/problem/content/67/ https://www.acwing.com/problem/content/submission/68/ 三道题都是二叉树相关 使用递归遍历即可解决 70. 二叉搜索树的第k个结点 给定一棵二叉搜索树,请找出其中的第k小的结点. 你可以假设树和k都存在,并且1≤k≤树的总结点数. 输入 输入:root = [, , ,…
题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大的数组靠前) 牛客网链接 java代码 import java.util.ArrayList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(…
题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大的数组靠前) 牛客网链接 js代码 /* function TreeNode(x) { this.val = x; this.left = null; this.right = null; } */ res = [] temp = [] function FindPath(root, expectN…
通过后续遍历,可以减少重复访问 #include <iostream> #include <string> using namespace std; struct BinaryTreeNode { int m_data; BinaryTreeNode* m_left; BinaryTreeNode* m_right; }; int TreeDepth(BinaryTreeNode* pRoot) { if (pRoot==NULL) { ; } int nleft=TreeDept…
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 思路:这题目有点特殊,主要在于序列为空的时候,不是后序遍历,返回的是false,但是在递归的时候,递归基要写true,因为如果写false,那么递归的所有结果都是false. step1:首先找到最后一个就是根节点: step2:然后比较左子树,是否都比root的值小,得到左子树的位置i - 1,并且存储左子树的所有值; step3:从位置i开始,…
(1)剑指Offer——Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高. Trie的核心思想是空间换时间.利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的. Trie树也有它的缺点,Trie树的内存消耗非常大.当然,或许用左儿子右兄弟的方法建树的话,可能会好点.可…
本题来自<剑指offer>二叉树的镜像 题目: 操作给定的二叉树,将其变换为源二叉树的镜像. 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 思路:   关于树,如果思路不够明确,可以画出图标辅助理解题目. 画出几步就会得出通用的思路,镜像发现如果通过交换左右子节点,左子树又是树,右子树又是树.可以采用递归的思路. 递归需要找到结束条件,如果根节点是是空或者当为子节点时候便结束本次递归. C…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 思路 画图可以很清晰地得到思路:先前序遍历,对每个结点交换左右子结点. 测试算例 1.功能测试(普通二叉树:左斜树:右斜树:一个结点) 2.特殊测试(根结点为null:) Java代码 //题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像. public class MirrorOfBinaryTree { pu…
剑指offer简单题,但是能一下写对也需要小心考虑细节. 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / 6 10 /   / 5 7 9 11 镜像二叉树 8 / 10 6 /   / 11 9 7 5 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), righ…
剑指Offer - 九度1521 - 二叉树的镜像2013-11-30 23:32 题目描述: 输入一个二叉树,输出其镜像. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000,n代表将要输入的二叉树节点的个数(节点从1开始编号).接下来一行有n个数字,代表第i个二叉树节点的元素的值.接下来有n行,每行有一个字母Ci.Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号.Ci=’l’表示第i个节点有一个左孩子,紧…
剑指Offer(十八):二叉树的镜像 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/baidu_31657889/ github:https://github.com/aimi-cn/AILearners 一.引子 这个系列是我在牛客网上刷<剑指Offer>的刷题笔记,旨在提升下自己的算法能力. 查看完整的剑指Offer算法题解析请点击:剑指Offer完整习题解析 二.题目 操作给定的二叉…
该题目来源于牛客网<剑指offer>专题. 操作给定的二叉树,将其变换为源二叉树的镜像. 示例: 输入: 4 / 2 7 / \ / 1 3 6 9 输出: 4 / 7 2 / \ / 9 6 3 1 Go语言实现: /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func invertTree(root *…
题目描述: 输入一个二叉树,输出其镜像. 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000,n代表将要输入的二叉树节点的个数(节点从1开始编号).接下来一行有n个数字,代表第i个二叉树节点的元素的值.接下来有n行,每行有一个字母Ci. Ci='d'表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号. Ci='l'表示第i个节点有一个左孩子,紧接着是左孩子的编号. Ci='r'表示第i个节点有一个右孩子,紧接着是右孩子的…
剑指 Offer 27. 二叉树的镜像 知识点:二叉树:递归:栈 题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 示例 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 解法一:递归法 函数功能:二叉树镜像: 1.终止条件:root==null的时候,返回null: 2.每个节点该做什么:将两个孩子节点互换: 3.什么时候做:递去的时候或者回来的时候都行(前序或者后序都行) /** * Definition for a binary tre…
题目 剑指 Offer 27. 二叉树的镜像 思路1(递归) 我们可以使用深度优先搜索,先递归到链表的末尾,然后从末尾开始两两交换.就相当于后续遍历而已 记得要先保存下来node.right节点,因为我们在递归完左边才递归右边,而递归完左边的时候,直接把node.right的指向修改了,如果事先不保存node.right节点的话,在递归右边传入的节点是错误的节点,因此得不到正确的答案 代码 class Solution { public TreeNode mirrorTree(TreeNode…
[剑指Offer]二叉树的镜像 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义: 源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 Ways 反转二叉树的左右节点,其实直接反转就好了.注意哈,从根节点…