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;
    }

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

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

  • 相关阅读:
    MinGW的下载和环境配置
    manacher算法
    利用jxl读取excel合并的单元格的一个小例子
    使用SQL*PLUS命令
    Oracle 11g学习笔记1
    关系数据模型
    JAVA IO学习总结
    Eclipse下的相对路径
    JAVA File的创建及相对路径绝对路径
    Java基本语法学习时需要注意的几点
  • 原文地址:https://www.cnblogs.com/Sunqingyi/p/12682841.html
Copyright © 2011-2022 走看看