做学校网站素材图片素材,免费做团购网站的软件,制作网页时首先要确定什么,qq的seo综合查询[二叉树展开为链表]
难度#xff1a;中等
题目描述
给你二叉树的根结点 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]
题解
因为和先序遍历相同所以可以想到利用先序遍历将所有的结点存储到列表中之后便可以依次添加右子结点
想法代码
using System;
using System.Collections.Generic;public class TreeNode
{public int val;public TreeNode left;public TreeNode right;public TreeNode(int val 0, TreeNode left null, TreeNode right null){this.val val;this.left left;this.right right;}
}public class Solution
{public static void Main(string[] args){TreeNode root new TreeNode{val 1,left new TreeNode{val 2,left new TreeNode(3),right new TreeNode(4)},right new TreeNode{val 5,right new TreeNode(6)}};Solution solution new Solution();solution.Flatten(root);solution.OnlyReadRightTree(root);}public IListTreeNode treeList new ListTreeNode();public void Flatten(TreeNode root){Travel(root);int size treeList.Count;for (int i 0; i size; i){TreeNode tree treeList[i];tree.left null;tree.right i size - 1 ? null : treeList[i 1];}}public void Travel(TreeNode root){if (root null){return;}treeList.Add(root);Travel(root.left);Travel(root.right);}public void OnlyReadRightTree(TreeNode root){if (root null){return;}OnlyReadRightTree(root.right);Console.Write(root.val);}
}
return;}OnlyReadRightTree(root.right);Console.Write(root.val);}
}