这几天要开始面试了,先来保证做题速度做几题。
今天换换口味,看看二叉树的题目。
进一步的要求是用迭代算法而不是递归算法。迭代大概就是指用栈实现?
提交通过-方法1
这个是递归实现的,比较简单
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
if(root == null){
return new ArrayList<>();
}
List<Integer> ans = new ArrayList<>();
dfs(root, ans);
return ans;
}
public void dfs(TreeNode root, List<Integer> ans){
if(root.left != null){
dfs(root.left, ans);
}
ans.add(root.val);
if(root.right!= null){
dfs(root.right, ans);
}
}
}
java知识
java里的栈怎么用来着?
来自https://blog.csdn.net/qq_42124842/article/details/91420306
栈是Vector的一个子类,它实现了一个标准的后进先出的栈,栈本身最重要的就是 push 和 pop.
堆栈只定义了默认构造函数,用来创建一个空栈。堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法
Stack()
除了由Vector定义的所有方法,自己也定义了一些方法:
序号 方法描述
1 boolean empty()
测试堆栈是否为空。
2 Object peek( )
查看堆栈顶部的对象,但不从堆栈中移除它。
3 Object pop( )
移除堆栈顶部的对象,并作为此函数的值返回该对象。
4 Object push(Object element)
把项压入堆栈顶部。
5 int search(Object element)
返回对象在堆栈中的位置,以 1 为基数。
用栈Stack 创建对象(类型不同)
Stack<Integer> stack = new Stack<>();
Stack<Character> stack = new Stack<>();