二叉树遍历/搜索

2019-03-26  本文已影响0人  R0lan

遍历

1.宽度优先遍历BFS

利用队列
//Node head;
LinkedList<Node> queue = new LinkedList<>();
// 或者 java.ulti.Queue<Node> queue = new java.util.LinkedList<>();
queue.add(head);
while(!queue.isEmpty()){
    head = queue.pull();
    //各类处理函数
    if(head.left != null){
        queue.add(head.left);
    }
    if(head.right != null){
        queue.add(head.right);
    }
}

2.深度优先遍历DFS

1.递归:前序中序后序

//Node head;
public class Solution {
    public static void recurIter(Node head){
        if (head == null){
            return;
//先序处理
        recurlter(head.left);
//中序处理
        recurlter(head.right);
//后序处理
        }
    }
}

2.非递归:前序中序后序

利用栈

//Node head;
Stack<Node> stack = new Stack<Node>();
// 先序: 先打印当前节点,然后右子树和左子树依次进栈
// 中序
// 后序
}
上一篇下一篇

猜你喜欢

热点阅读