• 将二分查找书转变成其镜像


    题目:输入一颗二元查找树,将该树转换为它的镜像,
    即在转换后的二元查找树中,左子树的结点都大于右子树的结点。
    用递归和循环两种方法完成树的镜像转换。
    例如输入:
    8
    / \
    6 10
    /\ /\
    5 7 9 11
    输出:
    8
    / \
    10 6
    /\ /\
    11 9 7 5

    二分查找树的节点数据结构为:

    1 struct BinaryTreeNode
    2 {
    3     int nData;
    4 
    5     BinaryTreeNode *lChild;
    6     BinaryTreeNode *rChild;
    7 };

    思路:很简单,每次交换根节点的左右子树直到也节点即可,直接上代码.

    递归方法:

     1 void ChangeToMirror_Recursive(BinaryTreeNode *root)
     2 {
     3     if (NULL == root)
     4     {
     5         return;
     6     }
     7 
     8     // 交换当前根节点的左右子树
     9     BinaryTreeNode *pTemp = root->lChild;
    10     root->lChild = root->rChild;
    11     root->rChild = pTemp;
    12 
    13     // 递归左子树
    14     ChangeToMirror_Recursive (root->lChild);
    15 
    16     // 递归右子树
    17     ChangeToMirror_Recursive (root->rChild);
    18 }

    非递归方法:

     1 void ChangeToMirror(BinaryTreeNode *root)
     2 {
     3     assert (root != NULL);
     4 
     5     BinaryTreeNode *Stack[MAX];
     6     int nTop = -1;
     7 
     8     Stack[++nTop] = root;
     9     while (nTop >= 0)
    10     {
    11         // 首先取出栈顶的节点,交换其左右子树
    12         BinaryTreeNode *pTemp1 = Stack[nTop--];
    13         
    14         BinaryTreeNode *pTemp2 = pTemp1->lChild;
    15         pTemp1->lChild = pTemp1->rChild;
    16         pTemp1->rChild = pTemp2;
    17 
    18         if (pTemp1->lChild != NULL)
    19         {
    20             // 左子树不为空需要处理
    21             Stack[++nTop] = pTemp1->lChild;
    22         }
    23 
    24         if (pTemp1->rChild != NULL)
    25         {
    26             // 右子树不为空需要处理
    27             Stack[++nTop] = pTemp1->rChild;
    28         }
    29     }
    30 }
  • 相关阅读:
    java图片裁剪原理
    代码整洁之道
    vue.js devtools安装
    Convert DateTime To Varchar with multiple Styles
    Sql Server为数值变量添加删除前导后缀(翻译)
    asp.net ckeditor 3.6.2 + ckfinder 2.1 上传图片
    转摘 IE6 动态创建 iframe 无法显示的 bug
    sql server output parameter
    windows7 无法删除文件夹 提示需要SYSTEM权限
    Kooboo 全文索引研究
  • 原文地址:https://www.cnblogs.com/ldjhust/p/3053282.html
Copyright © 2020-2023  润新知