unity 做网站,信盈达嵌入式培训,广告投放公司,门户网站什么意思二叉树的层序遍历II
难度#xff1a;中等
题目描述
给你二叉树的根节点 root #xff0c;返回其节点值 自底向上的层序遍历 。 #xff08;即按从叶子节点所在层到根节点所在的层#xff0c;逐层从左向右遍历#xff09;
示例1
输入#xff1a; inorder [9,3,15,20…二叉树的层序遍历II
难度中等
题目描述
给你二叉树的根节点 root 返回其节点值 自底向上的层序遍历 。 即按从叶子节点所在层到根节点所在的层逐层从左向右遍历
示例1
输入 inorder [9,3,15,20,7], postorder [9,15,7,20,3] 输出[3,9,20,null,null,15,7]
示例2
输入 inorder [-1], postorder [-1] 输出[-1]
题解
和 0102 题解题思路相同不同的只不过是最后将List加入到ListList中的时候变为Insert即可
想法代码
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;}
}class Solution
{public static void Main(string[] args){TreeNode root new TreeNode(3){left new TreeNode(9),right new TreeNode(20){left new TreeNode(15),right new TreeNode(7)}};Solution solution new Solution();IListIListint ans solution.LevelOrderBottom(root);foreach (var a in ans){foreach (var b in a){Console.Write(b );}Console.WriteLine();}}public IListIListint LevelOrderBottom(TreeNode root){IListIListint ans new ListIListint();if (root null){return ans;}QueueTreeNode queue new QueueTreeNode();queue.Enqueue(root);while (queue.Count 0){IListint tmp new Listint();int count queue.Count;for (int i 0; i count; i){TreeNode treeNode queue.Dequeue();tmp.Add(treeNode.val);if (treeNode.left ! null){queue.Enqueue(treeNode.left);}if (treeNode.right ! null){queue.Enqueue(treeNode.right);}}ans.Insert(0,tmp);}return ans;}
}