zoukankan      html  css  js  c++  java
  • leetcode 144(二叉树的前序遍历)

    水题一道,题目如下

    给定一个二叉树,返回它的 前序 遍历。
    
     示例:
    
    输入: [1,null,2,3]  
       1
        
         2
        /
       3 
    
    输出: [1,2,3]
    进阶: 递归算法很简单,你可以通过迭代算法完成吗?
    

    题解

    1. 递归

    import java.util.ArrayList;
    
    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public List<Integer> preorderTraversal(TreeNode root) {
            ArrayList<Integer> ansList = new ArrayList<>();
            if (root != null) {
                ansList.add(root.val);
                ansList.addAll(preorderTraversal(root.left));
                ansList.addAll(preorderTraversal(root.right));
            }
            return ansList;
        }
    }
    

    3.迭代做法

    class Solution(object):
        def preorderTraversal(self, root):
            """
            :type root: TreeNode
            :rtype: List[int]
            """
            stack = []
            ans = []
            stack.append(root)
            if (root==None):
                return []
            while (stack != []):
                node = stack.pop()
                ans.append(node.val)
                if (node.right!=None):
                    stack.append(node.right)
                if (node.left!=None):
                    stack.append(node.left)
            return ans
    
  • 相关阅读:
    MySQL-索引
    MySQL-存储引擎
    MySQL-基本概念
    Elasticsearch-分片原理2
    Elasticsearch-分片原理1
    [NOIP模拟33]反思+题解
    [NOIP模拟测试32]反思+题解
    [NOIP模拟测试31]题解
    [jzoj5840]Miner 题解(欧拉路)
    [NOIP模拟测试30]题解
  • 原文地址:https://www.cnblogs.com/yfc0818/p/11072592.html
Copyright © 2011-2022 走看看