参考题解:官方题解
问题:
思路:
- 这道题就是中序遍历。这里感觉要注意几点,能更加专业:
- 哨兵节点命名为 dummy,当前节点命名为 cur。前序遍历命名为 preorder,中序遍历命名为 inorder,后序遍历命名为 postorder。
题解:
class Solution {
public TreeNode increasingBST(TreeNode root) {
List<Integer> res = new ArrayList<Integer>();
inorder(root, res);
TreeNode dummyNode = new TreeNode(-1);
TreeNode curNode = dummyNode;
for (int val : res) {
curNode.right = new TreeNode(val);
curNode = curNode.right;
}
return dummyNode.right;
}
public void inorder(TreeNode root, List<Integer> res) {
if (root != null) {
inorder(root.left, res);
res.add(root.val);
inorder(root.right, res);
}
}
}