二叉树遍历/搜索

遍历

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>();
// 先序: 先打印当前节点,然后右子树和左子树依次进栈
// 中序
// 后序
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容