zoukankan      html  css  js  c++  java
  • 《剑指offer》面试题19 二叉树的镜像 Java版

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

    	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;
    		}
    	}
    
  • 相关阅读:
    HTML初体验
    out传值
    函数
    冒泡排序
    数组
    异常语句
    类 string math
    for 穷举 迭代
    HTML JavaScript及运算符
    HTML 格式与布局
  • 原文地址:https://www.cnblogs.com/czjk/p/11629756.html
Copyright © 2011-2022 走看看