二叉树的镜像
程序员文章站
2022-06-01 08:42:55
...
什么是二叉树的镜像?如图:
过程:线序遍历二叉树的每个节点,如果当前节点有孩子,交换左右孩子;交换所有的节点的左右孩子就得到了二叉树的镜像。
代码:
void mirror_R(Node* root)//递归
{
if(root == NULL)
return;
Node* tmp = root->left;
root->left = root->right;
root->right = tmp;
mirror(root->left);
mirror(root->right);
}
void mirror(Node* root)//非递归
{
stack<Node*> s;//利用栈的 后进先出 的特性
s.push(root)
while(s.size()>0)
{
Node* parent = s.top();//取出一个节点
s.pop();
//交换当前节点的左右孩子
Node* tmp = parent->left;
parent->left = parent->right;
parent->right = tmp;
if(parent->left != NULL)
{
s.push(parent->left);
}
if(parent->right != NULL)
{
s.push(parent->right);
}
}
}
上一篇: 二叉树的镜像
下一篇: ROS机器人编程实践——读书笔记4