933. Increasing Order Search Tree
2026/1/12大约 1 分钟约 305 字
933. Increasing Order Search Tree
难度: Easy
题目描述
Given the root of a binary search tree, rearrange the tree in in-order so that the leftmost node in the tree is now the root of the tree, and every node has no left child and only one right child.
Example 1:

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]
Example 2:

Input: root = [5,1,7] Output: [1,null,5,null,7]
Constraints:
- The number of nodes in the given tree will be in the range
[1, 100]. 0 <= Node.val <= 1000
解题思路
代码实现
解决方案
java
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public TreeNode increasingBST(TreeNode root) {
LinkedList<TreeNode> stk = new LinkedList<>();
TreeNode cur = root;
TreeNode newRoot = null;
TreeNode pre = null;
while (cur != null || !stk.isEmpty()) {
while (cur != null) {
stk.push(cur);
cur = cur.left;
}
if (!stk.isEmpty()) {
cur = stk.pop();
}
if (cur != null) {
if (newRoot == null) {
newRoot = cur;
pre = newRoot;
} else {
cur.left = null;
pre.right = cur;
pre = cur;
}
// res.add(cur.val);
cur = cur.right;
}
}
return newRoot;
}
}