对有两个节点的二叉树右旋时出错(根节点key为8,左子树key为5),想对8右旋,运行到注释哪里就出问题了,希望root->parent指向的地址改为root_old->parent指向的地址,但是被指针弄晕了,当前root->parent指向的是root本身,执行过后就变成root就变null了,麻烦大家看看,帮我弄清楚
运行前后截图:
struct node { T key; node *left, *right,*parent; }*root; void rotateR(node *&root) { node *root_old = root; root = root->left; root_old->left = root->right; root->right= root_old; root->parent= root_old->parent; // root_old->parent=root; root_old->left->parent = root_old; } void splay(node *n) { 。。。。 } };
给一个右旋的python实现,对比一下你的应该可以看出问题
x
相当于你的old root
y
相当于root