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]);
????????????}
????????}
????}