二叉查找树镜像,镜像对称二叉树

  二叉查找树镜像,镜像对称二叉树

  BM33二叉树的镜像描述了给定二叉树的操作,并将其转换为源二叉树的镜像。数据范围:二叉树中节点的数量,以及二叉树中每个节点的值。要求:空间复杂度。这个题目还有原位操作,就是空间复杂度和时间复杂度的求解。

  例如:源二叉树

  镜像二叉树

  示例1输入:

  {8,6,10,5,7,9,11}复制返回值:

  {8,10,6,11,9,7,5}复制说明:

  如题所示,例2输入:

  {}复制返回值:

  {}递归非常简单。镜像二叉树,只需要交换当前节点的左右节点,然后递归镜像左右节点。代码如下:

  #包含位/标准数据。h

  //https://www . now coder . com/practice/a 9d 0 ecbacef 9410 ca 97463 E4 a5 c 83 be 7?tpId=295 tags=title=难度=0判断状态=0 rp=0来源URL=/考试/oj

  定义树结构

  {

  int val

  struct TreeNode * left

  struct TreeNode * right

  TreeNode(int x) : val(x),left(nullptr),right(nullptr) {}

  };

  TreeNode *Mirror(TreeNode *pRoot)

  {

  if (pRoot==nullptr)

  {

  退货证明;

  }

  std:swap(pRoot- left,pRoot-right);

  镜子(pRoot-左);

  镜子(pRoot-right);

  退货证明;

  }非递归实现非递归实现需要借助栈的特性。步骤如下:

  1.检查空节点的状态。2.入站根节点。3.解开栈顶元素,交换栈顶左右指针的值,然后分别入站左右指针。4.重复上述过程,直到堆栈为空。注意:我们以前做前序遍历的时候是先把右节点放入栈中,再把左节点放入站中,这样就可以按照当前节点-左节点-右节点的顺序进行访问。但是这里只需要交换左右节点,不考虑访问顺序,所以堆叠顺序无所谓。

  代码如下:

  TreeNode *Mirror(TreeNode *pRoot)

  {

  if (pRoot==nullptr)

  {

  退货证明;

  }

  STD:stack TreeNode * s;

  s . push(pRoot);

  s . pop();

  而(!s.empty()

  {

  auto node=s . top();

  std:swap(节点左,节点右);

  if (node- left!=nullptr)

  {

  s.push(节点向左);

  }

  如果(节点——对!=nullptr)

  {

  s.push(节点右移);

  }

  }

  退货证明;

  }

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 二叉树深度遍历算法,多叉树的深度优先遍历
  • C++创建二叉树,C++实现二叉树
  • 如果希望按照非递减顺序访问二叉树所有节点,二叉树中至少包含一个节点
  • 完全二叉树的先序遍历,请写出该二叉树的先序和层次遍历的序列
  • 二叉搜索树和二叉查找树,二叉树 二叉搜索树区别
  • 二叉树查找第k个最小元素,找出二叉搜索树第k小的节点
  • 如果f是由有序树t转换而来的二叉树,
  • 判断二叉树是否是平衡二叉树,b+树是不是平衡二叉树
  • 二叉链表实现完全二叉树,采用三叉链表存储二叉树
  • 二叉树的三种遍历方式是什么,二叉树的三种遍历方式是
  • java二叉树排序算法,二叉排序树的实现
  • java二叉树的遍历算法代码,编程实现二叉树的遍历算法
  • java二叉树删除,二叉树查找算法java
  • java二叉树查找,二叉搜索树的定义
  • 留言与评论(共有 条评论)
       
    验证码: