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
    
  • 相关阅读:
    后端注册接口完善
    编写注册接口
    Git 多人开发及常见问题
    Git 常用命令
    GIT 的安装及配置SSH
    ORM查询方法(整理)
    HTTP的系列理解与整理
    Unity C# 反射
    C# 中的委托和事件
    Unity C# 运用 GetSaveFileName() 导出Excel文件
  • 原文地址:https://www.cnblogs.com/yfc0818/p/11072592.html
Copyright © 2011-2022 走看看