本文共 1248 字,大约阅读时间需要 4 分钟。
真是醉了,节点终止是‘#’不是‘$’,坑死我了。。。一直爆栈。
#includeusing namespace std;struct TreeNode{ int val; struct TreeNode* left; struct TreeNode* right; TreeNode(int x): val(x), left(NULL), right(NULL){}};void putit(vector & v,int val){ stack s; while(val > 0){ s.push(val%10); val/=10; } while(!s.empty()){ v.push_back(s.top() + '0'); s.pop(); } v.push_back(',');}void todoit(vector & v,TreeNode* p){ if( p == NULL){ v.push_back('#'); v.push_back(','); return ; } putit(v,p->val); todoit(v,p->left); todoit(v,p->right);}char* Serialize(TreeNode* root){ vector v; todoit(v,root); int L = v.size(); char* ans = new char[L]; for(int i=0;i left = doit(str,loc); p->right = doit(str,loc); return p;}TreeNode* Deserialize(char* str){ if(str == NULL) return NULL; int loc = 0; return doit(str,loc);}void print(TreeNode* p){ if(p == NULL) return; printf("%d ",p->val); print(p->left); print(p->right);}int main(){ //char input[] = "10,20,40,#,#,#,30,50,#,#,60,#,#"; char input[] = ""; TreeNode* t = Deserialize(input); print(t); printf("\n"); printf("<%s>\n",Serialize(t)); return 0;}
转载地址:http://pfwji.baihongyu.com/