`
mybwu_com
  • 浏览: 181842 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Set Deepth for each node in forest

 
阅读更多
Set Deepth for each tree node of a forest



TreeNode Entity:

public class TreeNode
    {
        public string Name { get; set; }
        public TreeNode ParrentNode { get; set; }
        public List<TreeNode> LstChildren { get; set; }
        public int Deep { get; set; }


        public void AddChildren(TreeNode node)
        {
            LstChildren.Add(node);
            node.ParrentNode = this;
        }
    }



SetTreeDeepth:


#region tree


        public void SetTreeDeep(TreeNode current)
        {
            current.Deep = GetDeepth(current);
            if (!current.LstChildren.Any())
                return;


            foreach (var children in current.LstChildren)
            {
                SetTreeDeep(children);
            }
        }


        public int GetDeepth(TreeNode node)
        {
            if (node == null)
                return 0;

            if (node.LstChildren.Any())
            {
                var deepArr = node.LstChildren.Select(GetDeepth).ToList();
                var maxChildDeep = deepArr.Max() + 1;
                return maxChildDeep;
            }
            return 0;
        }


        #endregion




Test Method:


[TestMethod]
        public void SetTreeDeep()
        {
            //              root
            //             / | \
            //            t1 t2 t3
            //           / \   /  \
            //          t4  t5 t6 t7
            //             /  \     \
            //            8    9     t10    
            var nodeLst = new List<TreeNode>
                {
                    new TreeNode() {Name = "Root", LstChildren = new List<TreeNode>(), Deep = 0, ParrentNode = null},
                     new TreeNode() { Name = "T1", LstChildren = new List<TreeNode>(), Deep = 0 },
            new TreeNode() { Name = "T2", LstChildren = new List<TreeNode>(), Deep = 0 },
             new TreeNode() { Name = "T3", LstChildren = new List<TreeNode>(), Deep = 0 },
             new TreeNode() { Name = "T4", LstChildren = new List<TreeNode>(), Deep = 0 },
             new TreeNode() { Name = "T5", LstChildren = new List<TreeNode>(), Deep = 0 },
            new TreeNode() { Name = "T6", LstChildren = new List<TreeNode>(), Deep = 0 },
             new TreeNode() { Name = "T7", LstChildren = new List<TreeNode>(), Deep = 0 },
             new TreeNode() { Name = "T8", LstChildren = new List<TreeNode>(), Deep = 0 },
            new TreeNode() { Name = "T9", LstChildren = new List<TreeNode>(), Deep = 0 },
             new TreeNode() { Name = "T10", LstChildren = new List<TreeNode>(), Deep = 0 }
                };


            nodeLst[7].AddChildren(nodeLst[10]);
            nodeLst[3].AddChildren(nodeLst[6]);
            nodeLst[3].AddChildren(nodeLst[7]);
            nodeLst[0].AddChildren(nodeLst[3]);

            nodeLst[0].AddChildren(nodeLst[2]);

            nodeLst[5].AddChildren(nodeLst[8]);
            nodeLst[5].AddChildren(nodeLst[9]);
            nodeLst[1].AddChildren(nodeLst[4]);
            nodeLst[1].AddChildren(nodeLst[5]);
            nodeLst[0].AddChildren(nodeLst[1]);

            var stds = new SetTreeDeepSample();
            stds.SetTreeDeep(nodeLst[0]);


            var ret = String.Join(",", nodeLst.Select(n => n.Deep).ToArray());

//expected result :3,2,0,2,0,1,0,1,0,0,0

        }

分享到:
评论

相关推荐

    CSS in Depth英文高清版

    《CSS in Depth》它对新手来说,学习css会是一个很好的介绍。这本书是前端开发人员应该知道的关于样式表的所有事情。你还可以找到CSS Grid,CSS模块化和模式库的综合部分。

    落叶冰点万能企业网站生成系统 v8.5.2 b

    落叶冰点万能企业网站生成系统...((deepth="&deepth222&" and ((parent_id_list like '%"&pid_list222&"%') or (parent_id='"&rs("id")&"')) 本系统后台路径: /admin/index.asp 后台用户名: admin 后台密码: admin

    基于CNN和Kinect进行动作识别matlab完整源码+数据+项目说明(毕设项目).zip

    基于CNN和Kinect进行动作识别matlab...deepth map是在深度图上绘制骨骼点; vid skeleton是动态显示骨架线; SkeletonView 是绘制骨架线的函数; 文件夹内的get_poin_data是直接得到骨骼点数据,存储并用来训练pb神经网络;

    website-fetcher:简单的静态网站抓取器

    $ website-fetcher website-fetcher 适用于抓取文档类型网站的小工具 用法: website-fetcher [-dir|-count|-deepth|-all|-help] URL -all=false: 是否要抓取整个网站,默认只抓取指定URL以下的网页 -deepth=16: 限制...

    一种GPU显示关键性能指标的测试方法.pdf

    此外,本文还介绍了基于OpenGL的齿轮绘制方法,通过输入齿轮的Inner_radius(内部半径大小)、outer_radius(外部半径大小)、width(宽度)、teeth(齿轮大小)、deepth(齿轮高度)分别画该齿轮的正面,画齿的前侧...

    matlab++显示代码行数-CNN_kinect:大创:利用CNN和Kinect进行动作识别

    matlab++显示代码行数 ...deepth map是在深度图上绘制骨骼点; vid skeleton是动态显示骨架线; SkeletonView 是绘制骨架线的函数; 文件夹内的get_poin_data是直接得到骨骼点数据,存储并用来训练pb神经网络;

Global site tag (gtag.js) - Google Analytics