题目
递归
class Solution {
public void flatten(TreeNode root) {
digui(root);
}
private TreeNode digui(TreeNode root) {
if (root == null) {
return null;
}
TreeNode left = digui(root.left);
TreeNode right = digui(root.right);
root.left = null;
if (left != null) {
root.right = left;
TreeNode temp = left;
while (temp.right != null) {
temp = temp.right;
}
temp.right = right;
} else if (right != null) {
root.right = right;
}
return root;
}
}
思路
(1) 先序遍历,
(2) 先设置左节点, 在设置右节点的时候, 一定要设置到左节点对应链表的最后位置, 而不是设置到左节点的头部