- 浏览: 183592 次
- 性别:
- 来自: 济南
文章分类
最新评论
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3},
1
\
2
/
3
return [1,2,3].
前序遍历一棵树,我们可以用递归,也可以借助堆栈用迭代来解决,因为前序遍历的顺序是根-左-右,因此我们压栈的时候顺序为根-右-左。下面是两个方法的代码:
递归:
迭代:
For example:
Given binary tree {1,#,2,3},
1
\
2
/
3
return [1,2,3].
前序遍历一棵树,我们可以用递归,也可以借助堆栈用迭代来解决,因为前序遍历的顺序是根-左-右,因此我们压栈的时候顺序为根-右-左。下面是两个方法的代码:
递归:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<Integer>(); if(root == null) return list; getPreorder(root, list); return list; } public void getPreorder(TreeNode root, List<Integer> list) { if(root == null) return; list.add(root.val); getPreorder(root.left, list); getPreorder(root.right, list); } }
迭代:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<Integer>(); Stack<TreeNode> stack = new Stack<TreeNode>(); if(root == null) return list; stack.add(root); while(!stack.isEmpty()) { TreeNode node = stack.pop(); list.add(node.val); if(node.right != null) { stack.push(node.right); } if(node.left != null) { stack.push(node.left); } } return list; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 265Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 267You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 384Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 374Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 497Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 563Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 475Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 664Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 469The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 429Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 575Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 580Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 426All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 898Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 930Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 602Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 674Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 843Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 783You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 705For a undirected graph with tre ...
相关推荐
144.Binary_Tree_Preorder_Traversal二叉树的前序遍历【LeetCode单题讲解系列】
Construct Binary Tree from Preorder and Inorder Traversal 根据先序,中序建立二叉树
python python_leetcode题解之144_Binary_Tree_Preorder_Traversal
144-Binary Tree Preorder Traversal94-Binary Tree Inorder Traversal145-Binary Tree Postorder Traversal(后续的非递归时间不够可以先跳过,有点难)层次遍历,队列辅助,相当于广搜。102-Binary Tree Level ...
javascript js_leetcode题解之144-binary-tree-preorder-traversal.js
在这个名为"Binary tree traversal.zip"的压缩包中,包含了作者在算法课上完成的一个关于二叉树遍历的作业。这个作业使用C++编程语言,并在Visual Studio 2019环境下编写。以下是关于二叉树遍历的详细知识: 1. **...
105.construct_binary_tree_from_preorder_and_inorder_traversal从前序
先序遍历(Preorder Traversal)是遍历二叉树的一种方法,它按照“根-左-右”的顺序访问树中的每个节点。在本主题中,我们将探讨如何实现先序遍历以及将其结果以树状打印出来。 先序遍历是一种递归算法,其基本步骤...
leetcode 530 力扣在线评委 # 问题 困难 解决方案 1 简单的 2 中等的 3 中等的 ...Binary Tree Preorder Traversal 2016.06.06 94. Binary Tree Inorder Traversal 318. Maximum Product of Word Length
在`BinaryTree_PreOrder.java`中,应该能找到前序遍历的代码实现,其递归版本会首先访问根节点,然后遍历左子树,最后遍历右子树。 5. **遍历算法的非递归实现** 虽然递归是最直观的方法,但非递归实现(如使用栈...
- 前序遍历 (Preorder Traversal) - 中序遍历 (Inorder Traversal) - 后序遍历 (Postorder Traversal) - 层次遍历 (Level Order Traversal) ##### 2.2 进阶操作 - **查找**: 在二叉树中查找特定的节点。 - **...
* [Binary Search Tree](https://github.com/kamyu104/LeetCode#binary-search-tree) * [Breadth-First Search](https://github.com/kamyu104/LeetCode#breadth-first-search) * [Depth-First Search]...
LeetCode笔记本docsifyjsLeetCode算法Java c / c ++ javascript的基本知识简单的1. Two Sum 704. Classical Binary Search2. 3 Sum206. Reverse Linked List中等的... Binary Tree Preorder Traversal145. Binary Tree
主要有三种类型的遍历:前序遍历(Preorder Traversal)、后序遍历(Postorder Traversal)和中序遍历(Inorder Traversal)。前序遍历先访问根节点,再遍历左子树,最后遍历右子树;后序遍历则是先遍历左子树和右子...
在标签“BinaryTree”中,我们聚焦于二叉树相关的算法和数据结构。二叉树的其他遍历方法还包括前序遍历(Preorder Traversal,根-左-右)、中序遍历(Inorder Traversal,左-根-右)和后序遍历(Postorder Traversal...
例如,"Binary Tree Preorder Traversal"(二叉树的前序遍历)要求使用递归或迭代方法遍历二叉树节点,这对于理解递归和树结构的遍历至关重要。 在解决LeetCode问题的过程中,开发者不仅能够提升编程技巧,还能锻炼...
再如,"Binary Tree Preorder Traversal"(二叉树的前序遍历)是一个与数据结构“树”紧密相关的问题。在Java中,我们可以用递归或栈来实现树的遍历。递归方式简洁明了,但需要注意处理递归基;栈方法则需要模拟调用...
在这个场景中,我们关注的是如何通过先序遍历(Preorder Traversal)和中序遍历(Inorder Traversal)的数据来“恢复”一个二叉树。这个问题来源于计算机科学中的树结构重建问题,常用于面试或算法训练。 先序遍历...
4. "Binary Tree Preorder Traversal":递归或迭代方式实现二叉树的前序遍历。 六、进阶挑战 随着对LeetCode的深入,可以尝试更高级别的题目,如图算法、位运算、字符串处理等。同时,参加LeetCode的周赛和双周赛,...