leetcode第一刷_ Flatten Binary Tree to Linked List
2023-09-11 14:20:46 时间
提示中说明了,改动后的链表相当于原树的前序遍历结果。前序遍历是根左右,因为要把转换后的左子树链接到根节点的右子树上,因此进入递归之后要先把节点的右子树保存下来,然后进入左子树,左子树转换后应该返回最后一个訪问的节点。这个节点的后继是根节点的转换后右子树。说起来很绕,可能看代码反而好一些。
注意一个问题是,不管如何。转换后的根节点一定要把左子树置空。要么会报错的。
TreeNode* preOrder(TreeNode *root){ if(!root||(!root->left&&!root->right)) return root; TreeNode *pre=NULL, *next; next = root->right; if(root->left){ root->right = root->left; pre = preOrder(root->left); } root->left = NULL; if(!next) return pre; if(pre) pre->right = next; return preOrder(next); } class Solution { public: void flatten(TreeNode *root) { preOrder(root); return; } };
相关文章
- LeetCode 20. 有效的括号(超详细超容易理解的动画解法!!!)
- Leetcode Articles: Insert into a Cyclic Sorted List
- Leetcode: Odd Even Linked List
- Leetcode: Remove Duplicate Letters
- Leetcode: Bulls and Cows
- Leetcode: Insertion Sort List
- Leetcode: Merge k Sorted List
- 【Java】List去重 / 删除ArrayList中重复元素,保持顺序 / 提取两个list中不同的元素
- [Leetcode] Convert Sorted List to Binary Search Tree
- [LeetCode] Add Two Numbers(stored in List)
- [LeetCode] Reverse Linked List II
- LeetCode 724. 寻找数组的中心索引
- jquery 中$.post获取MVC Controller中JsonResult返回包含LIst<Model>类型的子List<Model>的高级使用方法
- 【LeetCode】234. Palindrome Linked List (2 solutions)
- 【LeetCode】114. Flatten Binary Tree to Linked List
- [LeetCode] 1302. Deepest Leaves Sum 层数最深叶子节点的和
- [LeetCode] 986. Interval List Intersections 区间列表的交集
- [LeetCode] 922. Sort Array By Parity II 按奇偶排序数组之二
- [LeetCode] 711. Number of Distinct Islands II 不同岛屿的个数之二
- [LeetCode] 444. Sequence Reconstruction 序列重建
- [LeetCode] 92. Reverse Linked List II 倒置链表之二
- leetcode 142. Linked List Cycle II 环形链表 II
- leetcode算法226.翻转二叉树