机试笔记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;
}

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

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

 

posted @ 2020-04-11 22:48  不二良  阅读(129)  评论(0编辑  收藏  举报