问题:Jump Game I
难度:easy
说明:
将一个 BST 排成升序链表(数值从小到大排列的链表)。
题目连接:https://leetcode.com/problems/increasing-order-search-tree/
输入范围:
- The number of nodes in the given tree will be in the range
[1, 100]
. 0 <= Node.val <= 1000
输入案例:
Input: root = [5,3,6,2,4,null,8,1,null,null,null,7,9]
Output: [1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]
我的代码:
水题,先遍历左边,然后遍历右边就行,再进行递归
class Solution {
public:
TreeNode* increasingBST(TreeNode* root) {
if (root->left != nullptr) { // 左边全部右旋
TreeNode* left = root->left;
root->left = left->right;
left->right = root;
root = left;
root = increasingBST(root);
}
TreeNode* pre = root;
TreeNode* temp = root;
while (temp->right != nullptr) { // 找到一个右边还挂着左节点的,一个就行
temp = temp->right;
if (temp->left != nullptr) {
TreeNode* left = temp->left;
temp->left = left->right;
left->right = temp;
temp = left;
temp = increasingBST(temp); // 通过递归全部解决
pre->right = temp;
break; // 找一个就行
}
pre = temp;
}
return root;
}
};