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<TreeNode> stack = new Stack<TreeNode>();
//把根节点压栈
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]);
}
}
}
836

被折叠的 条评论
为什么被折叠?



