新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 研友的交流园地,讨论关于计算机考研的方方面面。
    [返回] 计算机科学论坛计算机理论与工程『 计算机考研交流 』 → [求助]一道DS程序设计题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 7036 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [求助]一道DS程序设计题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     chenminyi 帅哥哟,离线,有人找我吗?狮子座1984-7-28
      
      
      等级:大三(要不要学学XML呢?)
      文章:69
      积分:555
      门派:XML.ORG.CN
      注册:2006/7/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给chenminyi发送一个短消息 把chenminyi加入好友 查看chenminyi的个人资料 搜索chenminyi在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看chenminyi的博客11
    发贴心情 

    以下是引用hanshumin在2007-12-24 11:19:00的发言:
    是不是穿线二叉树,如果是的,应该不是很难,关键是如何找到遍历的第一个节点,以及其之后的后继节点。这一点好象很多课本上有算法。


    北大增补题中有用穿线树做后序遍历的,也有找前序前驱后序后继的。今天刚做了这两个题目,比较复杂,我只做了前序前驱的,后序后继的应该与之类似,不过后序遍历我没用找后续结点的方法。
    l = r = point
    while(l->left!=NULL && l->ltag==0) l = l->left;       //找point最左子节点
    while(r->right!=NULL && r->rtag==0) r = r->right; //找point最右子节点
    l = l->left;     r = r->right;   //最左子节点和最右子节点中必有一个的线索指向point的父结点
    if(l->right = point){            //最左子节点指向point的父结点,point必为父结点的右孩子
        q = l->left;                   //右子树根结点的前序前驱为左子树最右子节点
        while(q->right && q->right==0)
             q = q->right;
         return q;
    }
    if(r->left = point)              //最右子节点指向point的父结点,point必为父结点的左孩子
        return r;                      //左子树根节点的前序前驱为其父结点
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/12/25 21:30:00
     
     chenminyi 帅哥哟,离线,有人找我吗?狮子座1984-7-28
      
      
      等级:大三(要不要学学XML呢?)
      文章:69
      积分:555
      门派:XML.ORG.CN
      注册:2006/7/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给chenminyi发送一个短消息 把chenminyi加入好友 查看chenminyi的个人资料 搜索chenminyi在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看chenminyi的博客12
    发贴心情 
    上面是找指定节点point的前序前驱,后序后继也是类似的。不过我做后序遍历不是用这个方法。不过思路是差不多的~总之用穿线树任意结点可以找到其父结点,找到父结点了就可以求后继结点。在后序遍历的算法中,只有右子树需要向上回溯找父结点,因此可简化上面的算法。
    而且还不用flag = 0/1/2 只需要0/1即可
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/12/25 21:47:00
     
     GoogleAdSense狮子座1984-7-28
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 计算机考研交流 』 的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/9/23 11:18:42

    本主题贴数12,分页: [1] [2]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms