q.setElement(p.getElement());
stack1.push(p.getLeftChild());
stack2.push(q);
}
p = (BinaryTreeNode) stack1.pop();
q = (BinaryTreeNode) stack2.pop();
if (!stack1.empty()) {
p = (BinaryTreeNode) stack1.pop();
q = (BinaryTreeNode) stack2.pop();
q.setRightChild(new BinaryTreeNode());
q = q.getRightChild();
q.setElement(p.getElement());
stack1.push(p.getRightChild());
stack2.push(q);
}
}
return u;
}
/**
* (18)交换所有结点的左右子树
*/
public void Bitree_Revolute(BinaryTreeNode t) {
BinaryTreeNode temp;
temp = t.getLeftChild();
t.setLeftChild(t.getRightChild());
t.setRightChild(temp);
Bitree_Revolute(t.getLeftChild());
if (t.getRightChild() != null)
Bitree_Revolute(t.getRightChild());
}
/**
* (18)删除所有以元素x为根的子树
*/
public void Del_Sub_x(BinaryTreeNode t, Object x) {
if (t.getElement() == x)
Del_Sub(t);
else {
if (t.getLeftChild() != null)
Del_Sub_x(t.getLeftChild(), x);
if (t.getRightChild() != null)
Del_Sub_x(t.getRightChild(), x);
}
}
public void Del_Sub(BinaryTreeNode t) {
if (t.getLeftChild() != null)
Del_Sub(t.getLeftChild());
if (t.getRightChild() != null)
Del_Sub(t.getRightChild());
t = null;// 将其赋值为null表示删除t
}
}