100题15输入一颗二元查找树,把该树转化为它的镜像

来源:互联网 发布:天云大数据 雷涛 编辑:程序博客网 时间:2024/05/20 22:38

即在转化后的二元查找树中,左子树的结点都大于右子树的结点

  迭代算法可以用栈来实现,可以把结点的左右子树的根都压入栈。

印象中关于树的很多题目的非递归实现均可以用stack来实现

定义一个swap函数交换树的左右子节点

void swap(Node *l,Node *r){

Node *temp=l;

l=r;

r=temp;

}

void mirror(Node *root){

if(root==NULL)return;

stack<Node*> s;

s.push(root);

while(!s.empty()){

Node *t=s.pop();

swap(t->left,t->right);

if(t->left!=NULL)s.push(t->left);

if(t->right!=NULL)s.push(t->right);
}

}

原创粉丝点击