二叉查找树镜像翻转
2015-03-23 13:14
134 查看
题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。
分析:递归方法只需要遍历二叉树对遇到的节点交换左右即可,非递归可用栈遍历
//递归程序
void reverseTree(TreeNode *root)
{
if(root==null) return;
TreeNode * temp; //交换左右子树指针
temp=root->left;
root->left=root->right;
root->right=temp;
reverseTree(root->left);
reverseTree(root->right);
}
//非递归程序
void reverseTreeN(treeNode *root)
{
if(root==null) return;
stack s<treeNode *>=new <treeNode *>();
treeNode *temp;
s.push(root);
while( !s.isEmpty())
{
root=s.pop();
temp=root->left;
root->left=root->right;
root->right=temp;
root=root>left;
if(root->left!=null) s.push(root->left);
if(root->right!=null) s.push(root->right);
}
}
分析:递归方法只需要遍历二叉树对遇到的节点交换左右即可,非递归可用栈遍历
//递归程序
void reverseTree(TreeNode *root)
{
if(root==null) return;
TreeNode * temp; //交换左右子树指针
temp=root->left;
root->left=root->right;
root->right=temp;
reverseTree(root->left);
reverseTree(root->right);
}
//非递归程序
void reverseTreeN(treeNode *root)
{
if(root==null) return;
stack s<treeNode *>=new <treeNode *>();
treeNode *temp;
s.push(root);
while( !s.isEmpty())
{
root=s.pop();
temp=root->left;
root->left=root->right;
root->right=temp;
root=root>left;
if(root->left!=null) s.push(root->left);
if(root->right!=null) s.push(root->right);
}
}
相关文章推荐
- 翻转镜像
- 使用Matrix对bitmap的旋转和镜像水平垂直翻转
- 二叉查找树的镜像
- C语言 二叉查找树镜像
- 镜像命令MI(MIRROR)操作时,如何使文字不翻转
- 图片翻转180,镜像的简单实现方法
- unity3d 镜像翻转画面脚本
- Delphi图像处理 -- 图像翻转(镜像)
- Python opencv图像镜像翻转
- 【Android】android镜像翻转
- 嵌入式 hi3518c镜像动态翻转实现
- 图像镜像翻转
- 如何使用Matrix对bitmap的旋转与镜像水平垂直翻转
- 程序员面试100题之十三:求二叉查找树的镜像
- C++图像处理 -- 图像翻转(镜像)
- uc/gui横屏/竖屏切换(显示方向XY翻转与镜像)基于ILI9341
- KITTI数据扩充-图片水平镜像翻转
- 程序员面试100题之十三:求二叉查找树的镜像
- 二叉查找树的分层遍历输出和镜像
- 如何使用Matrix对bitmap的旋转与镜像水平垂直翻转