日期:2014-05-17  浏览次数:20733 次

二叉树的遍历问题
 public void WalkTree()
        {
            if (LeftTree != null)
            {
                LeftTree.WalkTree();
            }

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

            if (RightTree != null)
            {
                RightTree.WalkTree();
            }
        }
这段代看不懂 希望有人详解
二叉树 遍历

------解决方案--------------------
引用:
你说的我懂 我是说到了最左边的下一个为null的时候 不就停止了吗 

  if (LeftTree != null)//左支树不为空
          只是这个条件不满足了,但是还会执行下面的语句啊
------解决方案--------------------
引用:
你说的我懂 我是说到了最左边的下一个为null的时候 不就停止了吗 


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