Breadth-first traversal

前端 未结 3 2034
无人及你
无人及你 2020-12-13 00:07

I was trying to solve one interview question, but for that I have to travel the binary tree level by level. I have designed BinaryNode with having below variable

         


        
3条回答
  •  半阙折子戏
    2020-12-13 00:59

    using DFS approach: The tree traversal is O(n)

    public class NodeLevel
    {
        public TreeNode Node { get; set;}
        public int Level { get; set;}
    }
    
    public class NodeLevelList
    {
        private Dictionary> finalLists = new Dictionary>();
    
        public void AddToDictionary(NodeLevel ndlvl)
        {
            if(finalLists.ContainsKey(ndlvl.Level))
            {
                finalLists[ndlvl.Level].Add(ndlvl.Node);
            }
            else
            {
                finalLists.Add(ndlvl.Level,new List(){ndlvl.Node});
            }
        }
    
        public Dictionary> GetFinalList()
        {
            return finalLists;
        }
    }
    

    The method that does traversal:

    public static void DFSLevel(TreeNode root, int level, NodeLevelList nodeLevelList)
    {
        if(root == null)
            return;
    
        nodeLevelList.AddToDictionary(new NodeLevel{Node = root, Level = level});
    
        level++;
    
        DFSLevel(root.Left,level,nodeLevelList);
        DFSLevel(root.Right,level,nodeLevelList);
    
    }
    

提交回复
热议问题