YouTip LogoYouTip

Binary Search Traverse

## Binary Search Tree Depth-First Traversal Binary search tree traversal is divided into two main categories: depth-first traversal and level-order traversal. Depth-first traversal is further divided into three types: preorder tree walk, inorder tree walk, and postorder tree walk, which are as follows: * **1. Preorder Traversal:** Visit the current node first, then recursively visit the left and right subtrees in order. * **2. Inorder Traversal:** Recursively visit the left subtree first, then visit the node itself, and finally recursively visit the right subtree. * **3. Postorder Traversal:** Recursively visit the left and right subtrees first, then visit the node itself. Diagram of preorder traversal result: !(#) Corresponding code example: ... // Preorder traversal of the binary search tree rooted at node, recursive algorithm private void preOrder(Node node){ if( node !=null){ System.out.println(node.key); preOrder(node.left); preOrder(node.right); } } ... Diagram of inorder traversal result: !(#) Corresponding code example: ... // Inorder traversal of the binary search tree rooted at node, recursive algorithm private void inOrder(Node node){ if( node !=null){ inOrder(node.left); System.out.println(node.key); inOrder(node.right); } } ... Diagram of postorder traversal result: !(#) Corresponding code example: ... // Postorder traversal of the binary search tree rooted at node, recursive algorithm private void postOrder(Node node){ if( node !=null){ postOrder(node.left); postOrder(node.right); System.out.println(node.key); } } ... ### Java Example Code **Source code package download:*## src//binary/Traverse.java file code: package .binary; /** * Traversal */ public class Traverse<Key extends Comparable, Value>{ // The node in the tree is a private class, the outside world does not need to understand the specific implementation of the binary search tree node private class Node { private Key key; private Value value; private Node left, right; public Node(Key key, Value value){ this.key= key; this.value= value; left = right =null; } } private Node root;// root node private int count;// number of nodes in the tree // Constructor, default constructs an empty binary search tree public Traverse(){ root =null; count =0; } // Returns the number of nodes in the binary search tree public int size(){ return count; } // Returns whether the binary search tree is empty public boolean isEmpty(){ return count ==0; } // Insert a new (key, value) data pair into the binary search tree public void insert(Key key, Value value){ root = insert(root, key, value); } // Check if the binary search tree contains the key public boolean contain(Key key){ return contain(root, key); } // Search for the value corresponding to the key in the binary search tree. If the value does not exist, return null public Value search(Key key){ return search( root , key ); } // Preorder traversal of the binary search tree public void preOrder(){ preOrder(root); } // Inorder traversal of the binary search tree public void inOrder(){ inOrder(root); } // Postorder traversal of the binary search tree public void postOrder(){ postOrder(root); } //******************** //* Helper functions for the binary search tree //******************** // Insert a node (key, value) into the binary search tree rooted at node, using a recursive algorithm // Return the root of the binary search tree after inserting the new node private Node insert(Node node, Key key, Value value){ if( node ==null){ count ++; return new Node(key, value); } if( key.compareTo(node.key)==0) node.value= value; else if( key.compareTo(node.key) node->key node.right= insert( node.right, key, value); return node; } // Check if the binary search tree rooted at node contains a node with the key value, using a recursive algorithm private boolean contain(Node node, Key key){ if( node ==null) return false; if( key.compareTo(node.key)==0) return true; else if( key.compareTo(node.key) node->key return contain( node.right , key ); } // Search for the value corresponding to the key in the binary search tree rooted at node, recursive algorithm // If the value does not exist, return NULL private Value search(Node node, Key key){ if( node ==null) return null; if( key.compareTo(node.key)==0) return node.value; else if( key.compareTo(node.key) node->key return search( node.right, key ); } // Preorder traversal of the binary search tree rooted at node, recursive algorithm private void preOrder(Node node){ if( node !=null){ System.out.println(node.key); preOrder(node.left); preOrder(node.right); } } // Inorder traversal of the binary search tree rooted at node, recursive algorithm private void inOrder(Node node){ if( node !=null){ inOrder(node.left); System.out.println(node.key); inOrder(node.right); } } // Postorder traversal of the binary search tree rooted at node, recursive algorithm private void postOrder(Node node){ if( node !=null){ postOrder(node.left); postOrder(node.right); System.out.println(node.key); } } }
← Python3 Os StatPython3 Os Removedirs β†’