首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

LeetCode,翻转二叉树

力扣题目: 翻转一棵二叉树。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/invert-binary-tree/ ?...解题 递归 ❝这是一道很经典的二叉树问题。我们从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。...如果当前遍历到的节点 root 的左右两棵子树都已经翻转,那么我们只需要交换两棵子树的位置,即可完成以 root 为根节点的整棵子树的翻转。 ❞ 递归思想,关键点是找到结束边界和递归点。...题目中,我们先假设二叉树只有一个根节点,根节点有一个左孩子和一个右孩子,即: ?...root.Left right := root.Right root.Left = right root.Right = left return root } 但是二叉树不止这么简单

23230

C 语言】字符串模型 ( 字符串翻转模型 )

文章目录 一、字符串翻转模型 二、完整代码示例 一、字符串翻转模型 ---- 业务场景 : 给定下面的字符串 , 将下面的字符串翻转 ; // 将下面的字符串翻转 char str[]...*p_start = *p_end; // 将首部字符赋值给尾部字符 *p_end = c; // 指向头部的指针自增...p_end--; } 注意 : 上述由于直接在 字符串 所在的内存上进行修改 , 因此必须是 可修改的 栈内存 或 堆内存 , 不能是 全局区内的常量字符串 ; 参考 【错误记录】C...语言中通过指针操作字符串常量出错记录 ( 只有 栈内存 或 堆内存 中的数据才能通过指针修改 | 不要通过指针修改常量区的字符串 ) 报错 , 不要尝试使用指针修改常量区的数据 ; 二、完整代码示例 -...p_start; // 将尾部字符赋值给首部字符 *p_start = *p_end; // 将首部字符赋值给尾部字符 *p_end = c;

47310

二叉树——226. 翻转二叉树

1 题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。...显然,我们从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。...如果当前遍历到的节点root的左右两棵子树都已经翻转,那么我们只需要交换两棵子树的位置,即可完成以root为根节点的整棵子树的翻转。 复杂度分析 时间复杂度:o(N),其中N为二叉树节点的数目。...我们会遍历二叉树中的每一个节点,对每个节点而言,我们在常数时间内交换其两棵子树。 ·空间复杂度:O(N)。使用的空间由递归栈的深度决定,它等于当前节点在二叉树中的高度。...在平均情况下,二叉树的高度与节点个数为对数关系,即O(log N)。而在最坏情况下,树形成链状,空间复杂度为O(N)。 迭代: 递归实现也就是深度优先遍历的方式,那么对应的就是广度优先遍历。

24420

翻转二叉树

翻转二叉树题解集合 DFS写法1 DFS写法2 DFS写法3 对DFS写法的总结 BFS 总结 ---- DFS写法1 思路 一个二叉树,怎么才算翻转了?...即,位于底部的、左右孩子都是 null 的子树,先被翻转。 随着递归向上返回,子树一个个被翻转……整棵树翻转好了。 问题是在递归出栈时解决的。...遍历到 null,它没有子树可交换,返回出这个子树(null) ---- BFS 用层序遍历的方式去遍历二叉树。 根节点先入列,然后出列,出列就 “做事”,交换它的左右子节点(左右子树)。...并让左右子节点入列,往后,这些子节点出列,也被翻转。 直到队列为空,就遍历完所有的节点,翻转了所有子树。 解决问题的代码放在节点出列时。...二叉树的镜像与本题的是一模一样的题型,读者有空也可以尝试去做一下这道题

20720

二叉树翻转(递归+非递归)

文章目录 前言 问题描述 递归实现 非递归实现 参考文献 前言 二叉树翻转是一道经典的面试编程题,经常出现在各大公司的招聘笔试面试环节。...面试官的评语是:“我们 90% 的工程师使用您编写的软件,但是您却无法在面试时在白板上写出翻转二叉树这道题,所以滚蛋吧”。...因此翻转一个二叉树,就是把根结点的左子树翻转一下,同样的把右子树翻转一下,在交换左右子树就可以了。 当然,翻转左子树和右子树的过程和当前翻转二叉树的过程没有区别,就是递归的调用当前的函数就可以了。...因此,翻转二叉树的步骤可总结如下: (1)交换根结点的左子结点与右子结点; (2)翻转根结点的左子树(递归调用当前函数); (3)翻转根结点的右子树(递归调用当前函数)。...具体实现 // @brief: 非递归翻转二叉树 // @param: 二叉树根结点 // @ret: 翻转后的二叉树根结点 BinaryTreeNode* invertBTNonrecu(BinaryTreeNode

2.7K31
领券