NHN面试之二叉树遍历
来源:互联网 发布:运动软件哪个好 编辑:程序博客网 时间:2024/05/23 16:01
前不久去NHN公司参加面试,如网上形容的那样,比赛和面试的难道都相当高,最终没有通过,当时有道题目还是挺有意思的,下来后,想了一段时间,想到了一种方法。
题目:使用程序遍历二叉树,按照深度来访问二叉树节点,如:
要求的访问顺序是1 2 3 4 5 6
使用一个ArrayList来排序,每当访问后,就把该节点的左右子节点放到ArrayList中,这样就起到了一个排序的功能
import java.util.ArrayList;import java.util.List;public class TreeTest {private String value;private TreeTest left=null;private TreeTest right=null;private TreeTest(){}public TreeTest(String value){this.value=value;}public String getValue() {return value;}public TreeTest getLeft() {return left;}public void setLeft(TreeTest left) {this.left = left;}public TreeTest getRight() {return right;}public void setRight(TreeTest right) {this.right = right;}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("Test begin");List<TreeTest> list = new ArrayList<TreeTest>();//构造二叉树TreeTest t4 = new TreeTest("4");TreeTest t5 = new TreeTest("5");TreeTest t6 = new TreeTest("6");TreeTest t2 = new TreeTest("2");t2.setLeft(t4);TreeTest t3 = new TreeTest("3");t3.setLeft(t5);t3.setRight(t6);TreeTest t1 = new TreeTest("1");t1.setLeft(t2);t1.setRight(t3);list.add(t1);while(!list.isEmpty()){System.out.print(list.get(0).getValue());TreeTest tmp = list.get(0);list.remove(0);if(tmp.getLeft()!=null){list.add(tmp.getLeft());}if(tmp.getRight()!=null){list.add(tmp.getRight());}}System.out.println("\nTest end");}}
最终输出:
Test begin123456Test end
这种方法是偶然间想到的,感觉这个题目还有更好的方法,如果有人知道,希望留言一起讨论。
- NHN面试之二叉树遍历
- 程序员面试100题(算法)之层次遍历二叉树(含二叉树前序创建、层次遍历、前序遍历)
- 二叉树遍历-面试常见题
- 关于二叉树遍历及二叉树面试题目
- 数据结构面试之六——二叉树的常见操作2(非递归遍历&二叉排序树)
- 数据结构 算法面试100题 之 逐层遍历二叉树元素
- 面试常考手写代码之--二叉树非递归遍历
- 面试常考手写代码之--二叉树层次遍历(BFS)
- 数据结构面试之六——二叉树的常见操作2(非递归遍历&二叉排序树)
- 面试常考手写代码之--二叉树层次遍历(BFS)
- 数据结构面试之六——二叉树的常见操作2(非递归遍历&二叉排序树)
- 数据结构之二叉树遍历
- 二叉树之层次遍历
- DS之遍历二叉树
- 二叉树遍历之递归
- 二叉树之层次遍历
- 数据结构之二叉树遍历
- (续面试之常考二叉树)非递归遍历二叉树(先序、中序、后序)
- linux下svn创建版本库/导入/导出
- <s:iterator>和<s:param>,<s:a>的用法
- 第三天,2013-04-03,懒散的一晚
- 事务的隔离级别及spring声明式事务
- MASM32 编译链接
- NHN面试之二叉树遍历
- BOS中控件非空 非0校验
- bos常用数据的查询方法
- Flex读取外部XML中文乱码解决办法(转)
- 如何用VS2010新建一个类?用来写C++文件的标准格式建立?就是能做到声把声明放在.H里,实现放在.CPP里的
- N皇后
- Java String对象的经典问题(new String())
- 設計原則
- 32位汇编代码结构