zoukankan      html  css  js  c++  java
  • leetcode226

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     public int val;
     *     public TreeNode left;
     *     public TreeNode right;
     *     public TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public TreeNode InvertTree(TreeNode root) {
            if (root == null || (root.left == null && root.right == null)) return root;
    
                TreeNode left = root.left;
                root.left = InvertTree(root.right);
                root.right = InvertTree(left);
                return root;
        }
    }

    https://leetcode.com/problems/invert-binary-tree/#/description

    补充一个使用层次遍历处理的方案,java实现

     1 class Solution {
     2     public TreeNode invertTree(TreeNode root) {
     3         List<TreeNode> nodes = new LinkedList<>();
     4         if (root != null) {
     5             nodes.add(root);
     6         }
     7         while (!nodes.isEmpty()) {
     8             int numNodes = nodes.size();
     9             while (numNodes > 0) {
    10                 TreeNode node = nodes.remove(0);
    11                 // push children to the next layer by appending to the end of the list
    12                 if (node.left != null) {
    13                     nodes.add(node.left);
    14                 }
    15                 if (node.right != null) {
    16                     nodes.add(node.right);
    17                 }
    18                 // flip
    19                 TreeNode left = node.left;
    20                 node.left = node.right;
    21                 node.right = left;
    22                 numNodes--;
    23             }
    24         }
    25         return root;
    26     }
    27 }

    补充一个python的实现:

    1 class Solution:
    2     def invertTree(self, root: TreeNode) -> TreeNode:
    3         if root == None:
    4             return None
    5         left = root.left
    6         root.left = self.invertTree(root.right)
    7         root.right = self.invertTree(left)
    8         return root
  • 相关阅读:
    用Java实现四则运算
    敏捷开发角色分配
    需求分析之WBS
    需求分析之NABCD
    电梯演说
    开发流程的选择
    软件团队模式的选择
    维护日程管理项目
    日程管理系统中找错误
    Android的测试
  • 原文地址:https://www.cnblogs.com/asenyang/p/6732290.html
Copyright © 2011-2022 走看看