本文主要是介绍java数据结构与算法刷题-----LeetCode144. 二叉树的前序遍历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846
利用递归,每次入栈一个结点(每次递归都是一个入栈操作)。然后依次访问左右结点 先序遍历是,先访问当前结点,然后访问左儿子,然后访问右儿子 可以自己创建栈,然后不使用递归
递归
class Solution { private LinkedList < Integer > list = new LinkedList < > ( ) ; public List < Integer > preorderTraversal ( TreeNode root) { if ( root == null ) return list; list. add ( root. val) ; if ( root. left != null ) preorderTraversal ( root. left) ; if ( root. right != null ) preorderTraversal ( root. right) ; return list; }
}
迭代,自己创建栈模拟递归过程
class Solution { public List < Integer > preorderTraversal ( TreeNode root) { Stack < TreeNode > stack = new Stack < > ( ) ; LinkedList < Integer > list = new LinkedList < > ( ) ; while ( root != null || ! stack. isEmpty ( ) ) { while ( root!= null ) { list. add ( root. val) ; stack. push ( root) ; root = root. left; } root = stack. pop ( ) ; root = root. right; } return list; }
}
这篇关于java数据结构与算法刷题-----LeetCode144. 二叉树的前序遍历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!