【愚公系列】2021年11月 C#版 数据结构与算法解析(树)

简介: 【愚公系列】2021年11月 C#版 数据结构与算法解析(树)

基本树的实现

 public class Tree<T>
    {
        public Tree()
        {
            Deep = 1;
        }
        public int Deep { get; set; } 
        public string Name { get; set; } 
        public T Value { get; set; }
        public Tree<T> Perent { get; set; }
        private List<Tree<T>> Child = new List<Tree<T>>();
        public void AddChild(Tree<T> tree)
        {
            if (GetByName(tree.Name) != null)
            {
                return;
            }
            tree.Perent = this;
            tree.Deep = Deep + 1;
            Child.Add(tree);
        } 
        public void RemoveChild()
        {
            Child.Clear();
        }
        public Tree<T> GetByName(string name)
        {
            Tree<T> root = GetRootTree(this);
            List<Tree<T>> list = GatAll(root);
            var result = list.Where(c => c.Name == name).ToList();
            if (result.Count <= 0)
            {
                return null;
            }
            else
            {
                return result[0];
            }
        } 
        public List<Tree<T>> GatAll(Tree<T> tree)
        {
            List<Tree<T>> list = new List<Tree<T>>();
            list.Add(tree);
            if (tree.Child == null)
            {
                return null;
            }
            list.AddRange(tree.Child);
            foreach (var tree1 in tree.Child)
            {
                list.AddRange(GatAll(tree1));
            }
            return list.Distinct().ToList();
        }
        public Tree<T> GetRootTree(Tree<T> tree)
        {
            if (tree.Perent == null)
            {
                return tree;
            }
            return GetRootTree(tree.Perent);
        }
        public int GetDeep(Tree<T> tree)
        {
            List<Tree<T>> list = GetDeepTree(tree);
            return list.Max(c => c.Deep);
        }
        public List<Tree<T>> GetDeepTree(Tree<T> tree)
        {
            List<Tree<T>> list = new List<Tree<T>>();
            if (tree.Child.Count <= 0)
            {
                list.Add(tree);
            }
            else
            {
                foreach (var tree1 in tree.Child)
                {
                    if (tree1.Child.Count <= 0)
                    {
                        list.Add(tree1);
                    }
                    else
                    {
                        foreach (var tree2 in tree1.Child)
                        {
                            list.AddRange(GetDeepTree(tree2));
                        }
                    }
                }
            }
            return list;
        } 
    }
相关文章
|
22天前
|
机器学习/深度学习 存储 算法
如何评判算法好坏?复杂度深度解析
如何评判算法好坏?复杂度深度解析
24 0
|
25天前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
180 1
|
16天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
28天前
|
机器学习/深度学习 算法 数据挖掘
请解释Python中的决策树算法以及如何使用Sklearn库实现它。
决策树是监督学习算法,常用于分类和回归问题。Python的Sklearn库提供了决策树实现。以下是一步步创建决策树模型的简要步骤:导入所需库,加载数据集(如鸢尾花数据集),划分数据集为训练集和测试集,创建`DecisionTreeClassifier`,训练模型,预测测试集结果,最后通过`accuracy_score`评估模型性能。示例代码展示了这一过程。
|
21天前
|
存储 NoSQL 算法
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)(二)
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)
34 0
|
24天前
|
缓存 算法 C语言
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
45 0
|
2天前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
11天前
|
存储 缓存 算法
深度解析JVM世界:垃圾判断和垃圾回收算法
深度解析JVM世界:垃圾判断和垃圾回收算法
|
12天前
|
存储 算法
【算法与数据结构】深入解析二叉树(二)之堆结构实现
【算法与数据结构】深入解析二叉树(二)之堆结构实现
|
16天前
|
存储 算法
从动态规划到贪心算法:最长递增子序列问题的方法全解析
从动态规划到贪心算法:最长递增子序列问题的方法全解析
16 2

推荐镜像

更多