【力扣每日一题】144. 二叉树的前序遍历

简介: 【力扣每日一题】144. 二叉树的前序遍历

1. 题目描述

2. 题目解析

3. 题目代码

3.1 递归

**public IList<int> PreorderTraversal(TreeNode root)
        {
            List<int> list = new List<int>();
            Tree(root, list);
            return list;
        }
        public static void Tree(TreeNode root, List<int> list)
        {
            if(root != null)
            {
                list.Add(root.val);
                Tree(root.left, list);
                Tree(root.right, list);
            }
        }**

3.2 迭代

public IList<int> PreorderTraversal(TreeNode root)
        {
            Stack<TreeNode> stack = new Stack<TreeNode>();
            IList<int> list = new List<int>();
            if (root != null)
            {
                stack.Push(root);
            }
            while (stack.Count != 0)
            {
                TreeNode temp = stack.Peek();
                stack.Pop();
                if (temp != null)
                {
                    if (temp.right != null)
                    {
                        stack.Push(temp.right);
                    }
                    if(temp.left != null)
                    {
                        stack.Push(temp.left);
                    }
                    stack.Push(temp);
                    stack.Push(null);
                }
                else
                {
                    list.Add(stack.Peek().val);
                    stack.Pop();
                }
            }
            return list;
        }


相关文章
|
1月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
10天前
|
算法
刷算法Leetcode---9(二叉树篇Ⅲ)
刷算法Leetcode---9(二叉树篇Ⅲ)
11 3
|
1月前
|
算法
二刷力扣--二叉树(3)
二刷力扣--二叉树(3)
|
1月前
二刷力扣--二叉树(2)
二刷力扣--二叉树(2)
|
1月前
二刷力扣--二叉树(1)基础、遍历
二刷力扣--二叉树(1)基础、遍历
|
1月前
|
存储 算法 数据可视化
力扣156题最全解法:如何上下翻转二叉树(递归与迭代方法详解,附图解)
力扣156题最全解法:如何上下翻转二叉树(递归与迭代方法详解,附图解)
|
1月前
|
算法 数据可视化 数据挖掘
LeetCode题目104: 二叉树的最大深度(递归\迭代\层序遍历\尾递归优化\分治法实现 )
LeetCode题目104: 二叉树的最大深度(递归\迭代\层序遍历\尾递归优化\分治法实现 )
LeetCode题目104: 二叉树的最大深度(递归\迭代\层序遍历\尾递归优化\分治法实现 )
|
1月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
1月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
1月前
|
索引
【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值
【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值