一开始想就是想着优化思想,结果官方解答用的就是暴力解法。
然后看了其它的解答,发现思路其实很简单,通过不断的将右子树的结构挪到左子树的最右边的位置。
class Solution {
public void flatten(TreeNode root) {
while (root != null) {
if (root.left == null) {
root = root.right;
} else {
TreeNode pre = root.left;
while (pre.right != null) {
pre = pre.right;
}
pre.right = root.right;
root.right = root.left;
root.left = null;
root = root.right;
}
}
}
}