给定一个二叉树,原地将它展开为链表。
例如,给定二叉树
1 / \ 2 5 / \ \ 3 4 6
将其展开为:
1 \ 2 \ 3 \ 4 \ 5 \ 6
设置一个全局变量,把每一次变量到的节点连起来,作为pre,可以理解为把这次的root作为一个给下一次连接的东西把
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
TreeNode pre=null;
public void flatten(TreeNode root) {
if(root==null)
return;
flatten(root.right);
flatten(root.left);
root.right=pre;
root.left=null;
pre=root;
}
}
大佬做法
private TreeNode prev = null;
public void flatten(TreeNode root) {
if (root == null)
return;
flatten(root.right);
flatten(root.left);
root.right = prev;
root.left = null;
prev = root;
}