zoukankan      html  css  js  c++  java
  • A1086 Tree Traversals Again (25 分)

    思路如下

    通过观察题目可以发现 "Pop" 的就是中序序列打印出来的数据如题意给出即中序序列为 "3 2 4 1 6 5"。但问题是我当前 "Pop" 比如打印 3,前面 1 和 2 都是 3 的祖先,这应该用什么方法在未确定祖先的情况下打印子孙结点——我想到了递归,递归就是把一件事先走到最底做,然后再回过头来做——对应这里是我不管前面 1 和 2,先关注最后的 3

    那么大致思路可以得到了,遇到 "Push" 的时候就新建 node_t 类型结点并赋值数据域;遇到 "Pop" 的时候返回,我试着顺着这个思路模拟发现可行:

    遇到 "Push" 的处理手法:

     遇到 "Pop" 的处理手法:

    有兴趣的读者可以试试模拟,就不继续画了,有点丑(捂脸)

    /* 伪码 */
    
    node_t *create() {
        if (遇到 "Pop")    return NULL;
    
        node_t *root = new node_t;
        root->data = push_x();
        root->left = create();
        root->right = create();
    
        return root;
    }

    剩下的就是 1) 处理输入;以及2) 后序遍历,不过都很简单

    点击获取完整代码

     
  • 相关阅读:
    [译]reset, checkout和revert
    [译]merge vs rebase
    [译]使用branch
    [译]git push
    [译]git pull
    [译]git fetch
    [译]git remote
    Java RTTI机制与反射机制
    Java反射的一些理解
    Java中的异常处理:何时抛出异常,何时捕获异常?
  • 原文地址:https://www.cnblogs.com/bEngi1/p/14418203.html
Copyright © 2011-2022 走看看