首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

算法篇:树之翻转

算法: 个人觉得这种类型题目的根本在于对题目的理解,所以理解翻转二叉树的定义就很重要。...我们先看下什么是翻转二叉树:翻转的意思就是根节点不变,左右子树交换位置,当然这里的左右子树也得是翻转之后的二叉树。 解法: 1.空节点和单个节点的二叉树是不需要翻转的。...2.1)两个以上的节点的二叉树,首先翻转各自的左右子树, 2)然后与根节点的左右子树交换位置。...左右节点先翻转子树,再翻转孩子 l := invertTree(root.Left) r := invertTree(root.Right) root.Left,root.Right...题目2: 解法: 是题目1的变形题目:二叉树部分翻转我们观察翻转二叉树会发现,翻转后的节点他们所处的层次没有变化,只是左右交换了位置,基于这个原因,我们将本题目拆分成。

63510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    算法 - 字符串 - 翻转整数、有效的字母异位

    翻转整数 reverse方法 欧几米德方法 2....有效的字母异位 利用数组的sort()方法 计数累加算法 ---- 翻转整数 给出一个32位的有符号整数,你需要将整数的每位上的数字进行翻转 示例 示例 1: 输入: 123 输出: 321...示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 方法一:翻转字符串方法 首先设置边界极值 使用字符串的翻转函数进行主逻辑 补充符号 拼接最终结果 /**...方法二:类似欧几米德算法 求解 通过除以10取得最低位,然后又通过乘10将最低位迭代到最高位,完成翻转。...hash[k]){ return false; } hash[k] -= 1; } return true; } 时间复杂度:O(n) 算法中使用了2个单层循环 空间复杂度

    87520

    ☆打卡算法☆LeetCode 226. 翻转二叉树 算法解析

    一、题目 1、算法题目 “给定一个二叉树的根节点,翻转这颗二叉树,返回其根节点。” 题目链接: 来源:力扣(LeetCode) 链接: 226....翻转二叉树 - 力扣(LeetCode) 2、题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。...[4,2,7,1,3,6,9] 输出: [4,7,2,9,6,3,1] 示例 2: 输入: root = [2,1,3] 输出: [2,3,1] 二、解题 1、思路分析 题意是给定一棵二叉树的根节点,翻转二叉树...二叉树天生具有递归的性质,从根节点开始,递归地对树进行遍历,并从叶子结点先开始翻转。 如果当前遍历到的节点的左右两颗子树都已经翻转,则需要交换两个子树的位置。...最后遍历完成后,就完成了以root为根节点的整颗子树的翻转

    39810

    ☆打卡算法☆LeetCode 25、 K 个一组翻转链表 算法解析

    一、题目 1、算法题目 “将给定的链表,每 k 个节点翻转一次,返回翻转后的链表。” 题目链接: 来源:力扣(LeetCode) 链接:25....K 个一组翻转链表 - 力扣(LeetCode) (leetcode-cn.com) 2、题目描述 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。...进阶: 你可以设计一个只使用常数额外空间的算法来解决此问题吗? 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。...还需要使用两个变量,pre和end用来指向待翻转链表的头和尾,在经过k次循环后,end到达末尾,记录待翻转的链表next=end.next,翻转链表后,重置pre和end,进行下一次循环。...三、总结 有一个特殊情况需要注意,当翻转长度不够k时,定位到end完成后,end==null,说明已经到达链表末尾。 此时需要直接返回。

    12920

    翻转链表

    来源: lintcode-翻转链表 描述 翻转一个链表 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 挑战 在原地一次翻转完成 翻转链表是一个很基础的题,同时也是面试中开场常问的题...解题思路 我们都知道单链表的数据结构如下: public class ListNode { private int val; private ListNode next; } 翻转的实现是怎样的呢...== null) { return pre; } //保存后继节点 ListNode next = head.next; //将当前节点的next指针指向前置节点(翻转操作...= null) { //记录后继节点 nextNode = head.next; //翻转,将当前节点的next指针指向前置节点 head.next = preNode;...preNode = head; //向后遍历 head = nextNode; } //为空时返回前置节点 return preNode; } 运行结果如下(没有错误,我连续翻转了两次

    1K40

    图像翻转

    #图像左右翻转 xy=cv2.flip(o,-1)#图像上下左右翻转 cv2.imshow("o",o) cv2.imshow("x",x) cv2.imshow("y",y) cv2.imshow("...xy",xy) cv2.waitKey() cv2.destroyAllWindows() 算法:图像翻转是用于对图像进行镜像翻转处理。...水平翻转用于对图像进行水平方向上镜像处理;垂直翻转用于对图像进行垂直方向上镜像处理。对角翻转用于对水平方向上和垂直方向上镜像处理。图像翻转不是图像反转。图像翻转可以通过图像旋转获得。...图像翻转应用在图像增强、网页设计等领域。 其中,flicCode为翻转类型,src为原始图像,dst为翻转后图像。...flipCode表示翻转类型 书籍:《普林斯顿微积分读本》《Unity Shader入门精要》《Photoshop图形图像处理翻转课堂》 文献:Lin, Z. , Sun, J. , Davis,

    1.2K30

    硬币翻转

    作者 | 小K 出品 | 公众号:小K算法 01 故事起源 有n个硬币,每个硬币可能正面或者反面朝上。...针对以上第1、2种状态,不需要翻转,而第3种至少需要翻转1次。如果都翻转一次,前面的2种状态又会不一致,所以无法找到一个固定的翻转次数k。...如果都翻转1次,可以使所有的一致,但对于初始时全部相同的情况也必须翻转1次,就一定会产生不一致,所以1次不行。 如果都翻转2次,则一定可以。...1.首先对于任何一个硬币,翻转奇数次一定改变状态,翻转偶数次一定不改变状态。 既然翻转偶数次不变,为啥还要翻转呢,当然是为了凑数,因为要求必须刚好都翻转k次。 2.k必须是偶数。...文章首发平台:微信公众号【小K算法】。 如果喜欢小K的文章,请点个关注,分享给更多的人,小K将持续更新,谢谢啦!

    93020

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券