标签:144 遍历 前序 lists 二叉树 root 节点 treeNodes
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
简单难度。先访问根节点,再前序遍历左子树,再前序遍历右子树。
最简单的就是使用递归的方式。
public List<Integer> preorderTraversal( TreeNode root ){
ArrayList<Integer> lists = new ArrayList();
preorder( root, lists );
return lists;
}
private void preorder( TreeNode root, List<Integer> lists ){
if( root == null ){
return;
}
lists.add( root.val );
preorder( root.left, lists );
preorder( root.right, lists );
}
另一种非递归的方式,这种方式最好也要掌握。因为一般出到这种简单题的时候,可能会让你用非递归的方法写。
我们这里借助栈结构实现前序遍历。
public List<Integer> preorderTraversal( TreeNode root ){
List<Integer> result = new ArrayList<>();
if( root == null ){
return result;
}
//使用LinkedList模拟栈结构
LinkedList<TreeNode> treeNodes = new LinkedList<>();
//头节点先入栈
treeNodes.addFirst( root );
while( !treeNodes.isEmpty() ){
//出栈
root = treeNodes.removeFirst();
result.add( root.val );
if( root.right != null ){
//右子节点先入栈
treeNodes.addFirst( root.right );
}
if( root.left != null ){
//左子节点后入栈
treeNodes.addFirst( root.left );
}
}
return result;
}
标签:144,遍历,前序,lists,二叉树,root,节点,treeNodes 来源: https://blog.csdn.net/weixin_43767015/article/details/122635260
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。