贵州省城乡与住房建设部网站,网站建设陕西,竞价网官网,wordpress多語言主頁题目
给你二叉树的根结点 root #xff0c;请你将它展开为一个单链表#xff1a;
展开后的单链表应该同样使用 TreeNode #xff0c;其中 right 子指针指向链表中下一个结点#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。
示例 1请你将它展开为一个单链表
展开后的单链表应该同样使用 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 解答
源代码
/*** 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();dfs(root, list);for (int i 1; i list.size(); i) {TreeNode pre list.get(i - 1), cur list.get(i);pre.left null;pre.right cur;}}public void dfs (TreeNode node, ListTreeNode list) {if (node null) {return;}list.add(node);dfs(node.left, list);dfs(node.right, list);}
}
总结
这题我想了半天怎么直接将root根节点对应的二叉树展开成链表这样就不用返回值了。没想到看了题解根本没这么复杂直接前序遍历这个二叉树将每个节点地址存入列表再把节点连接起来。