zoukankan      html  css  js  c++  java
  • 机试笔记9--二叉树的遍历

    二叉树的遍历只要掌握好模板的就可以了,二叉树的构建在实现的时候传递参数时要考虑好指针的使用

    例题

    输入一个前序遍历的数列,建立二叉树,并中序遍历

    #include <bits/stdc++.h>
    #include <string>
    using namespace std;
    typedef struct node
    {
        char data;
        struct node* lchild;
        struct node* rchild;
    }T;
    int i=0;
    
    void createTree(T **tree,string s)//因为要修改指针,所以用二级指针
    {
        if(i>s.size()-1)
            return;
        if(s[i]=='#'){
             *tree=NULL;
             i++;
        }else{
            (*tree) = new T;
        //(*tree)=(T*)malloc(sizeof(T));
        (*tree)->data = s[i++];
        createTree(&((*tree)->lchild),s);
        createTree(&((*tree)->rchild),s);
        }
    }
    void inorderTraverse(T *t)
    {
        if(t){
    
          inorderTraverse(t->lchild);
          cout <<t->data<<" ";
          inorderTraverse(t->rchild);
        }
    }
    int main()
    {
        string str;
        cin >> str;
        T *tree=NULL;
        createTree(&tree,str);
        inorderTraverse(tree);
        return 0;
    }

    使用指针来进行结构体的传递是比较高效,节省内存的方法。

    这里没有写删除结点的代码,会造成内存泄漏,其实使用引用会直观很多,也算是回顾了下指针的使用。

  • 相关阅读:
    ThreadPoolExecutor线程池和ProcessPoolExecutor进程池
    canvas画一个时钟
    js中一些注意点 ps不断更新中....
    javascript文档节点
    Go网络编程
    Goroutine和Channel
    Go单元测试
    简单了解Go语言JSON包
    Go的命令行参数
    Go语言文件操作
  • 原文地址:https://www.cnblogs.com/Sunqingyi/p/12682841.html
Copyright © 2011-2022 走看看