java前中后序_Java 二叉树的定义 以及前中后序,层序遍历

Java

8a9a63f9ba5f7ab56508463fb94680f7.png

747ecfff0edec1e3328a850f46703a7a.png

class Solution {

List list = new ArrayList<>();

public List preorderTraversal(TreeNode root) {

if(root==null)

return new ArrayList<>();

list.add(root.val);

preorderTraversal(root.left);

preorderTraversal(root.right);

return list;

}

}

class Solution {

List list = new ArrayList();

public List inorderTraversal(TreeNode root) {

if(root == null)

return list;

inorderTraversal(root.left);

list.add(root.val);

inorderTraversal(root.right);

return list;

}

}

class Solution {

List list = new ArrayList();

public List postorderTraversal(TreeNode root) {

if(root == null)

return new ArrayList();

postorderTraversal(root.left);

postorderTraversal(root.right);

list.add(root.val);

return list;

}

}

层序遍历:

层序遍历我认为也可以看作是树的广度优先搜索(BFS),以根节点开始,依次遍历一级邻接点,二级邻接点…等等

具体实现是用队列去实现

f33a61efd5f663a380dcc1cf26148c7f.png

class Solution {

Queue queue = new LinkedList();

List> list = new ArrayList>();

public List> levelOrder(TreeNode root) {

if(root == null)

return list;

queue.offer(root);

while(!queue.isEmpty()){

int size = queue.size();

List innerList = new ArrayList();;

while(size--!=0){

TreeNode treeNode = queue.poll();

innerList.add(treeNode.val);

if(treeNode.left != null)

queue.add(treeNode.left);

if(treeNode.right != null)

queue.add(treeNode.right);

}

if(innerList != null)

list.add(innerList);

}

return list;

}

}

d6fc79c1ca5932db799f34c89725cce6.png

2e12e0a8ca426778a472c1a27cb78a58.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值