1.一些树的动画演示网站
http://btv.melezinek.cz/binary-search-tree.html
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
https://yangez.github.io/btree-js/
2.二叉树的遍历
2.1前序遍历
2.2前序非递归遍历
2.3中序遍历
2.5后序遍历
2.6层次遍历
3.相关代码总结
3.1前序遍历
// /** // * 前序遍历 // */ public void preorderTraversal() { preorderTraversal(root); } private void preorderTraversal(Node<E> node) { if (node == null) return; System.out.println(node.element); preorderTraversal(node.left); preorderTraversal(node.right); }
3.2中序遍历
// /** // * 中序遍历 // */ public void inorderTraversal() { inorderTraversal(root); } private void inorderTraversal(Node<E> node) { if (node == null) return; inorderTraversal(node.left); System.out.println(node.element); inorderTraversal(node.right); }
3.3后序遍历
// /** // * 后序遍历 // */ public void postorderTraversal() { postorderTraversal(root); } private void postorderTraversal(Node<E> node) { if (node == null) return; postorderTraversal(node.left); postorderTraversal(node.right); System.out.println(node.element); }
3.4层序遍历
// /** // * 层序遍历 // */ public void levelOrderTraversal() { if (root == null) return; Queue<Node<E>> queue = new LinkedList<>(); queue.offer(root); while (!queue.isEmpty()) { Node<E> node = queue.poll(); System.out.println(node.element); if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } } }
原文:https://www.cnblogs.com/ggnbnb/p/12292323.html