例如输入:
8
/ \
6 10
/\ /\
5 7 9 11
输出:
8
/ \
10 6
/\ /\
11 9 7 5
//将二叉查找树左右节点反转 #include <iostream> using namespace std; struct tree { int value; tree *left; tree *right; }; void addTree(tree *&ptr,int value) { if (ptr==nullptr) { tree *currentptr=new tree(); currentptr->value=value; currentptr->left=nullptr; currentptr->right=nullptr; ptr=currentptr; } else { if (ptr->value>value) { addTree(ptr->left,value); } else { addTree(ptr->right,value); } } } void reversetree(tree *&ptr) { if (ptr==nullptr) { return; } //判断是否为叶子节点 bool isleaf=(ptr->left&&ptr->right); if (isleaf) { //交换左右节点 tree *temp=ptr->left; ptr->left=ptr->right; ptr->right=temp; if (ptr->left) { reversetree(ptr->left); } if (ptr->right) { reversetree(ptr->right); } } } int main() { tree *root=nullptr; addTree(root,8); addTree(root,10); addTree(root,6); addTree(root,9); addTree(root,11); addTree(root,5); addTree(root,7); reversetree(root); cout<<root->value<<endl; cout<<root->left->value<<endl; cout<<root->left->left->value<<endl; return 0; }