C# TreeNode节点加载量过大溢出

1、TreeNode节点加载过多导致溢出的问题,代码如下

        TreeNode root = new TreeNode(1);
        TreeNode node2 = new TreeNode(2);
        TreeNode node3 = new TreeNode(3);
        TreeNode node4 = new TreeNode(4);
        root.Children.Add(node2);
        root.Children.Add(node3);
        node2.Children.Add(node4);
        PrintTreeNode(root);
        

2、调用函数

static void PrintTreeNode(TreeNode node)
    {
        if (node == null)
        {
            return;
        }        
        foreach (TreeNode child in node.Children)
        {
            PrintTreeNode(child);
        }
    }

以上是加载过多导致溢出的代码

当节点过多导致的溢出,后续解决方案如下:

1、初始化TreeNode代码一样

TreeNode root = new TreeNode(1);
        TreeNode node2 = new TreeNode(2);
        TreeNode node3 = new TreeNode(3);
        TreeNode node4 = new TreeNode(4);      
        root.Children.Add(node2);
        root.Children.Add(node3);
        node2.Children.Add(node4); 
        YHTreeNodeLoad(root);

2、调用函数

 static void YHTreeNodeLoad(TreeNode root)
    {
        if (root == null)
        {
            return;
        }
        //定义一个栈,存放所有的树节点
        Stack stack = new Stack();
        //把根节点压栈
        stack.Push(root);
        while (stack.Count > 0)
        {
            TreeNode node = stack.Pop();          
            //遍历完父节点后,将子节点压栈
            for (int i = node.Children.Count - 1; i >= 0; i--)
            {
                stack.Push(node.Children[i]);
            }
        }
    }

你可能感兴趣的:(算法)