コード例 #1
0
        /// <summary>
        /// Makes a non Binary tree
        /// </summary>
        /// <returns></returns>
        public static BaseObjects.NonBinaryTree MakeNonBT()
        {
            BaseObjects.NonBinaryTree tree = new BaseObjects.NonBinaryTree(44);

            tree.Children = new List <BaseObjects.NonBinaryTree>
            {
                new BaseObjects.NonBinaryTree(3),
                new BaseObjects.NonBinaryTree(4)
            };
            tree.Children[0].Children = new List <BaseObjects.NonBinaryTree>
            {
                new BaseObjects.NonBinaryTree(321),
                new BaseObjects.NonBinaryTree(233),
                new BaseObjects.NonBinaryTree(334)
            };

            tree.Children[1].Children = new List <BaseObjects.NonBinaryTree>
            {
                new BaseObjects.NonBinaryTree(101),
                new BaseObjects.NonBinaryTree(225)
            };
            tree.Children[0].Children = new List <BaseObjects.NonBinaryTree>
            {
                new BaseObjects.NonBinaryTree(101),
                new BaseObjects.NonBinaryTree(225),
                new BaseObjects.NonBinaryTree(101),
                new BaseObjects.NonBinaryTree(225)
            };

            return(tree);
        }
コード例 #2
0
        /// <summary>
        /// findLevelWithMaxNodes
        /// </summary>
        /// <param name="root"></param>
        /// <returns></returns>
        public static int findLevelWithMaxNodes(BaseObjects.NonBinaryTree root)
        {
            if (root == null)
            {
                return(-1);
            }

            Dictionary <int, List <BaseObjects.NonBinaryTree> > result = new Dictionary <int, List <BaseObjects.NonBinaryTree> >();
            List <BaseObjects.NonBinaryTree> list = new List <BaseObjects.NonBinaryTree>();
            int level = 0;
            int max   = 0;

            list.Add(root);
            result.Add(level, list);
            while (true)
            {
                foreach (var node in result[level])
                {
                    list = new List <BaseObjects.NonBinaryTree>();
                    if (node.Children != null)
                    {
                        list.AddRange(node.Children);
                    }
                }

                if (list.Count > 0)
                {
                    result.Add(level + 1, list);

                    if (max < list.Count)
                    {
                        max = list.Count;
                    }
                }
                else
                {
                    break;
                }

                level++;
            }
            return(max);
        }