搜素二叉樹的權值為某值的路徑+二叉樹變雙向連結串列
阿新 • • 發佈:2018-12-30
搜素二叉樹的權值為某值的路徑
void findPath(node *root,int expect,int current,vector<int> &path) { if(root!=NULL) { current += root->val; path.push_back(root->val); if(root->left==NULL && root->right==NULL &¤t==expect) { cout<<"a path is found:"; vector<int>::iterator iter; for(iter = path.begin();iter!=path.end()-1;iter++) { cout<<*iter<<"->"; } cout<<*iter<<endl; return; } findPath(root->left,expect,current,path); findPath(root->right,expect,current,path); path.pop_back(); } }
二叉樹變雙向連結串列
void convertnode(node *root,node *&lastOfList) { if(root==NULL) return; if(root->left!=NULL) convertnode(root->left,lastOfList); root->left = lastOfList; if(lastOfList!=NULL) lastOfList->right = root; lastOfList = root; if(root->right!=NULL) convertnode(root->right,lastOfList); } node *convert(node* root)//準備工作 { node *LastOfList = NULL; convertnode(root,LastOfList); node *headOfList = LastOfList; while(headOfList!=NULL && headOfList->left!=NULL) { cout<<headOfList->val<<"->"; headOfList = headOfList->left; } cout<<headOfList->val<<endl; return headOfList; }