首页 > 编程语言 > 详细

《剑指offer》面试题19 二叉树的镜像 Java版

时间:2019-10-07 12:55:54      阅读:85      评论:0      收藏:0      [点我收藏+]

书中方法:这道题目可能拿到手没有思路,我们可以在纸上画出简单的二叉树来找到规律。最后我们发现,镜像的实质是对于二叉树的所有节点,交换其左右子节点。搞清楚获得镜像的方法,这道题实际上就变成了一道二叉树遍历的变形。这里选择前序遍历二叉树。

    public void change(TreeNode root){
        if(root == null)return;
        
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        
        change(root.left);
        change(root.right);
    }

如果改成循环实现:实际上也就是把递归改成循环前序遍历二叉树。注意null是可以被压入栈(队列、HashMap等)的,栈全部是null元素和栈为空不同。

    public void change2(TreeNode root){
        if(root == null)return;
        Stack<TreeNode> stack = new Stack<TreeNode>();
        stack.push(root);
        
        while(!stack.isEmpty()){
            TreeNode now = stack.pop();
            if(now.right != null)stack.push(now.right);
            if(now.left != null)stack.push(now.left);
            
            TreeNode temp = now.left;
            now.left = now.right;
            now.right = temp;
        }
    }

《剑指offer》面试题19 二叉树的镜像 Java版

原文:https://www.cnblogs.com/czjk/p/11629756.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!