leetcode:144. Binary Tree Preorder Traversal
2016-03-19 22:09
351 查看
转载请注明出处:z_zhaojun的博客
原文地址
题目地址
Binary Tree Preorder Traversal
思路:优先添加遍历左子树,在遍历的同时判断当前节点的右子树是否为空,如果不为空则添加到nodeList(类似栈,实现先进后出,最晚add的最先remove)中,当左子树遍历完毕后,再通过nodeList进行右子树的遍历。
实现代码(Java):
原文地址
题目地址
Binary Tree Preorder Traversal
Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3}, return [1,2,3].
思路:优先添加遍历左子树,在遍历的同时判断当前节点的右子树是否为空,如果不为空则添加到nodeList(类似栈,实现先进后出,最晚add的最先remove)中,当左子树遍历完毕后,再通过nodeList进行右子树的遍历。
实现代码(Java):
public class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> valList = new ArrayList<>(); List<TreeNode> nodeList = new ArrayList<>(); while (root != null) { valList.add(root.val); if (root.right != null) { nodeList.add(root.right); } if (root.left != null) { root = root.left; } else { if (nodeList.size() > 0) { root = nodeList.get(nodeList.size() - 1); nodeList.remove(nodeList.size() - 1); } else { break; } } } return valList; } }
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- 新注册
- 文件遍历排序函数
- 四大漏洞入侵博客
- Lua 学习笔记之C API 遍历 Table实现代码
- C#遍历文件夹后上传文件夹中所有文件错误案例分析
- C#中遍历Hashtable的4种方法
- 在Ubuntu系统上安装Ghost博客平台的教程
- Erlang中遍历取出某个位置的最大值代码
- C++实现图的邻接矩阵存储和广度、深度优先遍历实例分析
- C++实现图的邻接表存储和广度优先遍历实例分析
- C语言二叉树的非递归遍历实例分析
- 使用C语言构建基本的二叉树数据结构
- 一波二叉树遍历问题的C++解答实例分享
- C++非递归队列实现二叉树的广度优先遍历
- php遍历目录方法小结
- 一个目录遍历函数
- php遍历删除整个目录及文件的方法
- PHP遍历文件夹与文件类及处理类用法实例
- 听说博客有移动化了