Leetcode 之Binary Tree Postorder Traversal(47)
LeetCode Tree Binary 47 Traversal
2023-09-14 08:57:33 时间
中序遍历二叉搜索树,得到的是一个有序的结果,找出其中逆序的地方就可以了。如果逆序的地方相邻,只需把逆序的相换即可;如果不相邻,则需要找到第二个逆序对的
第二个元素再做交换。
定义两个指针p和q来指定需要交换的元素,指针pre记录当前结点的前驱结点,用来判断是否逆序。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
void recoverTree(TreeNode *root) { pre = p = q = nullptr; dfs(root); swap(p->val, q->val); } void dfs(TreeNode *root) { if (!root)return; dfs(root->left); if (pre != nullptr && pre->val > root->val) { if (p == nullptr) { p = pre; q = root; } else q = root; } pre = root; dfs(root->right); }
相关文章
- ☆打卡算法☆LeetCode 214. 最短回文串 算法解析
- Longest Common Prefix_LeetCode
- Array相关LeetCode题目笔记
- LeetCode 刷题笔记——day 5
- LeetCode:122. 买卖股票的最佳时机 II
- LeetCode 206. 反转链表
- LeetCode笔记:Biweekly Contest 89
- leetcode 206. 反转链表 js实现
- 前端工程师leetcode算法面试必备-二叉树的构造和遍历1
- 用Js怒刷LeetCode
- LeetCode-279-完全平方数
- LeetCode-347-前K个高频元素
- 每日一道leetcode:2. 两数相加
- leetcode-2335. 装满杯子需要的最短总时长
- LeetCode——根据二叉树创建字符串与二叉树的最近公共祖先
- 创建list ALV tree[RS_TREE_LIST_DISPLAY]详解编程语言
- Linux系统下使用Tree命令查看目录结构(tree命令linux)
- Oracle关联Tree让数据管理再添一种思维方式(oracle关联tree)