在这种遍历方法中,首先访问根节点,然后是左子树,最后是右子树。
我们从A开始, 并在进行预遍历之后,首先访问 A 本身,然后移至其左子树B。B 也进行了预遍历。一直进行到访问所有节点为止。该树的预遍历的输出将是-
A → B → D → E → C → F → G
这是我们将要实现的算法:
打印节点的数据
递归遍历左子树
递归遍历右子树
让我们看看如何在类上实现它。
preOrder() { preOrderHelper(this.root); }
辅助功能:
function preOrderHelper(root) { if (root !== null) { console.log(root.data); preOrderHelper(root.left); preOrderHelper(root.right); } }
您可以使用以下方式进行测试:
let BST = new BinarySearchTree(); BST.insertRec(10); BST.insertRec(15); BST.insertRec(5); BST.insertRec(50); BST.insertRec(3); BST.insertRec(7); BST.insertRec(12); BST.preOrder();
输出结果
这将给出输出-
10 5 3 7 15 12 50