机试笔记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; }
使用指针来进行结构体的传递是比较高效,节省内存的方法。
这里没有写删除结点的代码,会造成内存泄漏,其实使用引用会直观很多,也算是回顾了下指针的使用。