输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。
2012-11-04 17:23
399 查看
#include <iostream> #include <stack> using namespace std; //二叉树结构 typedef struct BinaryTreeNode { char m_chValue; BinaryTreeNode *m_pLChild; BinaryTreeNode *m_pRChild; }BiTree; //递归方式将树镜像 void BSTreeMirrored(BiTree *pTree) { if (NULL == pTree) { return; } else { //从叶到根镜像。(也可从根向叶镜像,只需把交换代码写到递归调用之前即可) BSTreeMirrored(pTree->m_pLChild); BSTreeMirrored(pTree->m_pRChild); BiTree *pTemp = pTree->m_pLChild; pTree->m_pLChild = pTree->m_pRChild; pTree->m_pRChild = pTemp; } } //非递归方式将树镜像(需借助栈来实现) void NoRecursive(BiTree *pTree) { if (NULL == pTree) { return ; } BiTree *pTemp = NULL; stack<BiTree*> s; s.push(pTree); while(!s.empty()) { pTemp = s.top(); s.pop(); BiTree *pExchange = pTemp->m_pLChild; pTemp->m_pLChild = pTemp->m_pRChild; pTemp->m_pRChild = pExchange; if (NULL != pTemp->m_pLChild) { s.push(pTemp->m_pLChild); } if (NULL != pTemp->m_pRChild) { s.push(pTemp->m_pRChild); } } } //先序创建二叉树 BiTree *CreateBiTree(BiTree *pTree = NULL) { char ch; cin>>ch; if ('#' == ch) { pTree = NULL; } else { pTree = new BiTree; pTree->m_chValue = ch; pTree->m_pLChild = CreateBiTree(pTree->m_pLChild); pTree->m_pRChild = CreateBiTree(pTree->m_pRChild); } return pTree; } //先序遍历二叉树 void TraverseTree(BiTree *root) { if (NULL != root) { cout<<root->m_chValue<<endl; TraverseTree(root->m_pLChild); TraverseTree(root->m_pRChild); } } int main() { BiTree *root = NULL; root = CreateBiTree(); TraverseTree(root); cout<<"2次镜像之后"<<endl; BSTreeMirrored(root); NoRecursive(root); TraverseTree(root); return 1; }
相关文章推荐
- 微软算法100道题-----输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点
- 微软算法100道题-----输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点
- 输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换:
- 15.输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点, 用递归和循环两种方法完成树的镜像转换
- 输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点
- 面试题:输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换。
- 输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换。
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 13.输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像(递归解法)
- 输入一颗二元查找树,将该树转换为它的镜像(15)
- 输入一颗二元查找树,将该树转换为它的镜像(递归解法)
- 【练习】输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- [编程之美-06]输入一颗二元查找树将该树转换为它的镜像
- 解题笔记(32)——输入一颗二元查找树,将该树转换为它的镜像
- 【微软100题】输入一颗二元查找树,将该树转换为它的镜像
- No15、输入一颗二元查找树,将该树转换为它的镜像