zoukankan      html  css  js  c++  java
  • Leetcode题目226.翻转二叉树(简单)

    题目描述:

    翻转一颗二叉树

    示例:
    
    输入:
    
         4
       /   
      2     7
     /    / 
    1   3 6   9
    输出:
    
         4
       /   
      7     2
     /    / 
    9   6 3   1

    思路分析:

    1)递归,不断交换左右子树,直到子树为空

    public static TreeNode invertTree(TreeNode root) {
    
            if (root != null) {
                TreeNode tempNode = invertTree(root.left);
                root.left = invertTree(root.right);
                root.right = tempNode;
            }
            return root;
    }

    2)迭代:

    这个方法的思路就是,我们需要交换树中所有节点的左孩子和右孩子。因此可以创一个队列来存储所有左孩子和右孩子还没有被交换过的节点。开始的时候,只有根节点在这个队列里面。只要这个队列不空,就一直从队列中出队节点,然后互换这个节点的左右孩子节点,接着再把孩子节点入队到队列,对于其中的空节点不需要加入队列。最终队列一定会空,这时候所有节点的孩子节点都被互换过了,直接返回最初的根节点就可以了。

    public TreeNode invertTree(TreeNode root) {
        if (root == null) return null;
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.add(root);
        while (!queue.isEmpty()) {
            TreeNode current = queue.poll();
            TreeNode temp = current.left;
            current.left = current.right;
            current.right = temp;
            if (current.left != null) queue.add(current.left);
            if (current.right != null) queue.add(current.right);
        }
        return root;
    }
  • 相关阅读:
    GCD
    常用存储位置
    AFNetworking 不支持 text/plain,unacceptable content-type: text/plain
    iOS layer 动画
    自定义对象实现copy,遵守协议<NSCopying, NSMutableCopying>
    Objective-c学习笔记03——内存管理
    Objective-c学习笔记02——类(面向对象)01
    Objective-c学习笔记01——简介
    Objective-c——NSString
    开源网站
  • 原文地址:https://www.cnblogs.com/ysw-go/p/11898075.html
Copyright © 2011-2022 走看看