将一棵二叉树展开成一个链表,可以按照如下步骤进行操作:
1.对于根节点,首先将其左子树展开成一个链表,并将其右子树展开成一个链表。
2.如果左子树展开成了链表,将其链接到根节点的右子树上。
3.如果右子树展开成了链表,将其链接到左子树展开成链表的末尾。
4.如果左右子树都已经展开成了链表,则不需要进行任何操作。
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
class Solution {
public void flatten(TreeNode root) {
if (root == null) {
return;
}
flatten(root.left);
flatten(root.right);
if (root.left != null) {
TreeNode node = root.left;
while (node.right != null) {
node = node.right;
}
node.right = root.right;
root.right = root.left;
root.left = null;
}
}
}