binary search tree iterative insert simplest version

Kim

I am trying to write the simplest version (uses less code lines) to write an iterative insert for binary search trees.

This what I did:

typedef struct Node {
    int data;
    struct Node* left;
    struct Node* right;
} Node;

Node* insert_BST_it(Node* root, int v) {
  Node* r = root, *hold, *node = create_node_bst(v);;
  int left = 0;
  while (r) {
    left = 0;
    if (elm <= r->data) {
      hold = r;
      r = r->left;
      left = 1;
    }
    else {
      hold = r;
      r = r->right;
      left = 0;
    }
  }
  if (left)
    hold->left = node;
  else
    hold->right = node;
  return root;
}

How would you do a simpler one?

chux - Reinstate Monica

How would you do a simpler (iterative) one?

  • Instead of walking the BST with a Node *, use a Node ** so we can easily update root if needed. IOWs, as code walks the tree, keep track of the address of the pointer that needs updating.

Untested simpler code:

Node *insert_BST_it(Node *root, int val) {
  Node **current = &root;
  while (*current) {
    current = (*current)->data <= val ? &(*current)->left : &(*current)->right;
  }
  *current = create_node_bst(val);
  return root;
}

Sample usage:

Node *root = 0;
for (int i=0; i<3; i++) {
  root = insert_BST_it(root, rand());
  assert(root);  // Test for insertion failure somehow.
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

How do I randomly insert nodes into a binary search tree?

Unable to insert/print out the whole Binary Search Tree

Binary Tree: iterative inorder print

Recursive to Iterative method for Binary Search Tree

Binary Search tree, inorder method iterative not working

Insert a node in a binary tree - Convert iterative to recursive

Binary Search Tree insert method fails to insert any nodes

Problem with Binary Search tree code for insert operation

A complete Binary Search Tree with level order insert in Java

Insert sorted array into binary search tree

Binary Search Tree - Insert

using recursive function to insert item in Binary search tree

Error in insert function for binary search tree

what's wrong with my method insert of binary search tree?

Insert char * into binary search tree in C

Binary Search Tree having issues with insert function

Binary Tree, Binary Search Tree, Binary search

Iterative Binary Search Tree Insert in C

How do I insert into the next available node on a binary search tree?

Pointers in insert function for Binary Search Tree (BST)

Wrote Binary Search algorithms for Python, both a recursive and iterative version. How would you judge their efficiency?

Recursive insert binary search tree JAVA

Binary Tree/Search Tree

SML Binary Search Tree Insert Function

What is wrong with this iterative solution in validating Binary Search Tree?

Binary Search in Python - Iterative Method

Iterative approach: Validating a binary search tree

space complexity of iterative binary search

Iterative Binary Search Tree C++; Why sometimes my program run correctly and other time not?

TOP Ranking

  1. 1

    Failed to listen on localhost:8000 (reason: Cannot assign requested address)

  2. 2

    Loopback Error: connect ECONNREFUSED 127.0.0.1:3306 (MAMP)

  3. 3

    How to import an asset in swift using Bundle.main.path() in a react-native native module

  4. 4

    pump.io port in URL

  5. 5

    Compiler error CS0246 (type or namespace not found) on using Ninject in ASP.NET vNext

  6. 6

    BigQuery - concatenate ignoring NULL

  7. 7

    ngClass error (Can't bind ngClass since it isn't a known property of div) in Angular 11.0.3

  8. 8

    ggplotly no applicable method for 'plotly_build' applied to an object of class "NULL" if statements

  9. 9

    Spring Boot JPA PostgreSQL Web App - Internal Authentication Error

  10. 10

    How to remove the extra space from right in a webview?

  11. 11

    java.lang.NullPointerException: Cannot read the array length because "<local3>" is null

  12. 12

    Jquery different data trapped from direct mousedown event and simulation via $(this).trigger('mousedown');

  13. 13

    flutter: dropdown item programmatically unselect problem

  14. 14

    How to use merge windows unallocated space into Ubuntu using GParted?

  15. 15

    Change dd-mm-yyyy date format of dataframe date column to yyyy-mm-dd

  16. 16

    Nuget add packages gives access denied errors

  17. 17

    Svchost high CPU from Microsoft.BingWeather app errors

  18. 18

    Can't pre-populate phone number and message body in SMS link on iPhones when SMS app is not running in the background

  19. 19

    12.04.3--- Dconf Editor won't show com>canonical>unity option

  20. 20

    Any way to remove trailing whitespace *FOR EDITED* lines in Eclipse [for Java]?

  21. 21

    maven-jaxb2-plugin cannot generate classes due to two declarations cause a collision in ObjectFactory class

HotTag

Archive