Leetcode-标签为Tree 102. Binary Tree Level Order Traversal

来源:互联网 发布:国外域名注册商有那些 编辑:程序博客网 时间:2024/06/06 23:16

原题

Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).

For example:
Given binary tree [3,9,20,null,null,15,7],

    3   / \  9  20    /  \   15   7

return its level order traversal as:

[  [3],  [9,20],  [15,7]]

代码分析

二叉树的层序遍历。

代码实现

    public IList<IList<int>> LevelOrder(TreeNode root) {        if (root == null)                return new List<IList<int>>();            IList<IList<int>> rtn = new List<IList<int>>{new List<int> {root.val}};            var tmp = getNextLevel(new List<TreeNode> { root });            if (tmp != null && tmp.Count > 0)            {                foreach (var item in tmp)                    rtn.Add(item);            }            return rtn;    }    private IList<IList<int>> getNextLevel(IList<TreeNode> curLevel)        {            if (curLevel == null || curLevel.Count == 0)                return null;            IList<IList<int>> rtn= new List<IList<int>>();            List<TreeNode> nextn = new List<TreeNode>();            foreach (var item in curLevel)            {                if (item.left != null)                    nextn.Add(item.left);                if (item.right != null)                    nextn.Add(item.right);            }            if (nextn.Count == 0)                return null;            rtn.Add(nextn.Select(r => r.val).ToList());            var children = getNextLevel(nextn);            if (children != null && children.Count > 0)            {                foreach (var item in children)                    rtn.Add(item);            }            return rtn;        }
2 0
原创粉丝点击