二叉树镜像问题

二叉树的镜像

http://www.nowcoder.com/questionTerminal/564f4c26aa584921bc75623e48ca3011

  • 通过先序遍历,遇到非叶子结点,则交换其左右子节点的位置;遇到叶子结点则返回

    public void Mirror(TreeNode root) {
    
          if (root == null) {
              return;
          }
    
          if (root.left == null && root.right == null) { // 非叶子节点
              return;
          }
    
          // 对非叶子节点(至少有一个子节点,左节点或右节点),交换左右节点
          TreeNode temp = root.left;
          root.left = root.right;
          root.right = temp;
    
          // 当有左节点时,继续交换左右子节点
          if (root.left!=null){
              Mirror(root.left);
          }
          // 当有右节点时,继续交换左右子节点
          if (root.right!=null){
              Mirror(root.right);
          }
      }
  • 可以通过一个示例来了解一下:
    图片说明

全部评论

相关推荐

求个付费实习岗位:这种就是吃满时代红利又没啥技术水平,只能靠压力学生彰显优越感的老登,别太在意了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务