开发者社区> 问答> 正文

数据结构与算法 二叉树交换左右子树算法

编写算法,对一棵二叉树中所有结点的左右子树相互交换

展开
收起
知与谁同 2018-07-17 11:21:10 1908 0
2 条回答
写回答
取消 提交回答
  • 原来节点结构体:
    typedef struct
    {
    Element X;
    Node* pLeft;
    Node* pRight;
    }Node;

    现在从新定义一个结构
    typedef struct
    {
    Element X;
    NewNode* pRight;
    NewNode* pLeft;
    }NewNode;

    然后用新树的根指向原树的根
    Node* pOldTree; 老树
    NewNode* pNewTree = (NewNode*)pOldTree;

    这样省的交换了,省事吧 -_,-
    2019-07-17 22:53:55
    赞同 展开评论 打赏
  • 传入树的根结点即可:
    exchangeLR(&root); //root为树的根节点

    void exchangeLR(TreeNode *root)
    {
    TreeNode *tmp;
    if (root == NULL)
    return;
    // 左子树交换
    exChangeLR(root->left);
    // 右子树交换
    exChangeLR(root->right);
    // 交换当前结点的左右子树
    tmp = root->left;
    root->left = root->right;
    root->right = tmp;
    }
    2019-07-17 22:53:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
“大数据+算法”助力B2B未来商业 立即下载
数据+算法定义新世界 立即下载
Apache Flink 流式应用中状态的数据结构定义升级 立即下载