gg
当前位置: 首页 >> C# >> Content

二叉树的遍历问题

相关文章

 public void WalkTree()
        {
            if (LeftTree != null)
            {
                LeftTree.WalkTree();
            }

            Console.Write(this.NodeData.ToString() + "\t");

            if (RightTree != null)
            {
                RightTree.WalkTree();
            }
        }
这段代看不懂 希望有人详解 二叉树 遍历
------Solutions------
在线求解答啊 各位大神
------Solutions------
有没有人来回答一下

------Solutions------
 public void WalkTree()
        {
            if (LeftTree != null)//左支树不为空
            {
                LeftTree.WalkTree();//递归遍历左支树
            }

            Console.Write(this.NodeData.ToString() + "\t");// 输出遍历到的节点

            if (RightTree != null)//右支树不为空
            {
                RightTree.WalkTree();//递归遍历右支树
            }
        }
------Solutions------
来个大神回答一下啊
------Solutions------
你说的我懂 我是说到了最左边的下一个为null的时候 不就停止了吗 
------Solutions------
大神在回来一下啊
这里怎么详聊的
------Solutions------

引用 5 楼 u010620340 的回复:
你说的我懂 我是说到了最左边的下一个为null的时候 不就停止了吗 

  if (LeftTree != null)//左支树不为空
          只是这个条件不满足了,但是还会执行下面的语句啊
------Solutions------
你实在不懂,你单步调试,看看就懂了

------Solutions------
引用 5 楼 u010620340 的回复:
你说的我懂 我是说到了最左边的下一个为null的时候 不就停止了吗 


不会停止。
我给你形象的描述一下这个算法:
你要遍历一棵树来找一样东西,你只有一个人,但是你会分身术
你先走到树的根节点,往左边看看,有路,你就分个身,派他去搜左边,再往右边看看,也有路,你就再分个身,派他去搜右边。
然后你的左分身走到下一个节点,左看看,右看看,都有路,于是他也分出两个身,这两个小分身再分头搜索
以此类推,直到某个分身发现前面没路了,OK,我的任务完成了,这个分身就消失了
但是搜索会停止吗?不会,因为其它的分身还在其他地方找。
你仔细对比程序,是不是这个意思。
最重要的关注点在于:一次WalkTree()调用内部会产生两次WalkTree()调用(两边子树都有的话)
------Solutions------
谢谢大家 我懂了

热门搜索 - TryCatch Copyright © 2012-2013 tc5u.com 版权所有