wordpress 网页制作,搜索推广账户优化,网络营销推广四个步骤,苏州保洁公司钟点工二叉树展开为链表
给你二叉树的根结点 root #xff0c;请你将它展开为一个单链表#xff1a;
展开后的单链表应该同样使用 TreeNode #xff0c;其中 right 子指针指向链表中下一个结点#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同… 二叉树展开为链表
给你二叉树的根结点 root 请你将它展开为一个单链表
展开后的单链表应该同样使用 TreeNode 其中 right 子指针指向链表中下一个结点而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。
示例 1 输入root [1,2,5,3,4,null,6]
输出[1,null,2,null,3,null,4,null,5,null,6]示例 2
输入root []
输出[]示例 3
输入root [0]
输出[0]提示
树中结点数在范围 [0, 2000] 内-100 Node.val 100
**进阶**你可以使用原地算法O(1) 额外空间展开这棵树吗
题解
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val val;* this.left left;* this.right right;* }* }*/
class Solution {public void flatten(TreeNode root) {ListTreeNode list new ArrayListTreeNode();preorder(root,list); for(int i1;ilist.size();i){TreeNode preNode list.get(i-1);TreeNode cur list.get(i);preNode.right cur;preNode.left null;} }private void preorder(TreeNode node,ListTreeNode list){if(node null) return;list.add(node);preorder(node.left,list);preorder(node.right,list);}
}/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TTreeNodereeNode right) {* this.val val;* this.left left;* this.right right;* }* }*/
class Solution {public void flatten(TreeNode root) {if (root null)return;if(root.left ! null){TreeNode right root.right;TreeNode leftRightNode rightNode(root.left);leftRightNode.right right;root.right root.left;root.left null;}flatten(root.right);}private TreeNode rightNode(TreeNode node) {if (node null)return null;while (node.right ! null)node node.right;return node;}}