牛客题霸NC72二叉树的镜像Java题解

二叉树的镜像

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

牛客题霸NC72二叉树的镜像Java题解
https://www.nowcoder.com/practice/564f4c26aa584921bc75623e48ca3011?tpId=117&&tqId=34994&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking
方法1:利用栈
解题思路:利用栈遍历二叉树的所有节点,交换每个节点的左右子节点。

import java.util.*;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }
}
*/
public class Solution {
    public void Mirror(TreeNode root) {
          if(root == null){   //如果roto为null,返回
              return;
          }

          LinkedList<TreeNode> stack = new LinkedList<>();  
          stack.addLast(root);

          while(!stack.isEmpty()){    //利用栈遍历二叉树的所有节点,交换每个节点的左右子节点。

               TreeNode node = stack.removeLast();   

               if(node.left!=null){         //如果左子节点不为null,将左子节点加入到stack中
                   stack.addLast(node.left);
               }
               if(node.right!=null){       //如果右子节点不为null,将右子节点加入到stack中
                   stack.addLast(node.right);
               }

               TreeNode tmp = node.left;    //交换左、右子节点
               node.left = node.right;
               node.right = tmp;
          }
    }
}

方法2:递归
解题思路:递归遍历左右子树,交换每个节点的左右子节点。

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public void Mirror(TreeNode root) {
        if (root == null) {   
            return;
        }
        Mirror(root.left);   //递归遍历左子树
        Mirror(root.right);  //递归遍历右子树

        TreeNode node = root.left;  //交换左、右子节点
        root.left = root.right;
        root.right = node;
    }
}
全部评论

相关推荐

搜索部&nbsp;首先说下timeline8.18,投递8.19,约一面8.21,晚上一面call约二面8.22,上午二面下午oc周末等待(8.23,8.24)8.25,offer一年前,我还是懵懵懂懂,高考完的暑假,只会提前学学高数,未来的画像是什么?我或许无法预测。开学后,自学Python,接单,无数个客户的ddl,偷偷摸摸一个人找自习的地方,这一步步竟然为后来的我,搭建工程能力的基础。大一上,我也要感谢我的第一位老板,让我接触到了实习,师兄带着我一步步入门,看他们写的飞书文档。大一下,导师带我参与企业项目,这让我渐渐发现,应该去实践,增长见识,而非局限当下,盯着自己的小新pro。不久后,第一波投递开始,结果当然是约面极少。盯着简历上的文字和ssob,我开始思考,确实很多可以去提升。带着些许不甘心,继续沉淀,慢慢的约面也越来越多,有的时候两天7场,准备完就接着下一个日程。这一次,也许是刚好到位吧,比较match,面试答的流利,关关难关关过,成为度孝子展望未来,依然是重重挑战,果然只有收到offer的那一刻是开心的。愿在百度星海拆解的每一段代码,都能成为丈量宇宙的诗行;此志终赴星河,而今迈步重铸天阶。屏幕前的你们,在无数个向星海奔赴的日夜,一定一定,会在未来化作群星回响的征程——请永远相信此刻埋首耕耘的自己!!!
一天三顿半:???百度提前批发 offer了?不是统一和正式批排序完再发吗我靠
百度求职进展汇总
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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