Given a binary tree, flatten it to a linked list in-place.
For example, given the following tree:

The flattened tree should look like:

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目意思是,按照前序遍历,把二叉树变成只有右子树的链表。
前序遍历二叉树,每次
1. 原来的右节点,放在左子树节点的最终右节点的右边
2. 把原来左节点变成右节点。
3. 左节点置空
class Solution {
public void flatten(TreeNode root) {
if (root == null) {
return;
}
if (root.left != null) {
flatten(root.left);
}
if (root.right != null) {
flatten(root.right);
}
TreeNode rootRight = root.right;
root.right = root.left;
root.left = null;
// 右节点,放在左子树节点的最终右节点的右边
TreeNode buttonRight = root;
while (buttonRight.right != null) {
buttonRight = buttonRight.right;
}
buttonRight.right = rootRight;
return;
}
}
本文介绍了一种将二叉树结构通过前序遍历的方式转化为只有右子树的链表的方法,该方法首先处理左子树,然后将原来的右子树置于左子树的最右节点之后,最后将左子树设为空。
839

被折叠的 条评论
为什么被折叠?



