静态二叉树的构造
中序遍历
递归
#includeusing namespace std; #define maxn 30 int n; vector ans; struct node{ string data;int left;int right; }a[maxn]; void init(){ cin>>n; for(int i=1;i<=n;i++){ string s;int left;int right;cin>>s>>left>>right; a[i].data=s;a[i].left=left;a[i].right=right; } } int findroot(){ for(int i=1;i<=n;i++){ bool flag= true; for(int j=1;j<=n;j++){ if(a[j].left==i||a[j].right==i){ flag= false; break; } } if(flag){ return i; } } } void inorder(int start){ if(start<0) return; if(a[start].left!=-1||a[start].right!=-1) //非叶节点 ans.push_back("("); inorder(a[start].left); ans.push_back(a[start].data); inorder(a[start].right); if(a[start].left!=-1||a[start].right!=-1) //非叶节点 ans.push_back(")"); } int main() { init(); inorder(findroot()); if(ans.size()>1){ ans.erase(ans.begin());ans.erase(ans.end()); } for(int i=0;i



