Need help with this Please give short explanation a What are

Need help with this. Please give short explanation.

a. What are the ancestors of node J?

b. What are the descendants of node T?

c. What are the descendants of node B?

d. What is the order in which the nodes are visited by a preorder traversal?

e. What is the order in which the nodes are visited by a postorder traversal?

Need help with this. Please give short explanation. a. What are the ancestors of node J? b. What are the descendants of node T? c. What are the descendants of node B? d. What is the order in which the nodes are visited by a preorder traversal? e. What is the order in which the nodes are visited by a postorder traversal?

Solution

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

# include <stdio.h>

# include <conio.h>

# include <stdlib.h>

typedef struct BST {

  int data;

  struct BST *lchild, *rchild;

} node;

void insert(node *, node *);

void inorder(node *);

void preorder(node *);

void postorder(node *);

node *search(node *, int, node **);

void main() {

  int choice;

  char ans = \'N\';

  int key;

  node *new_node, *root, *tmp, *parent;

  node *get_node();

  root = NULL;

  clrscr();

  printf(\"\ Program For Binary Search Tree \");

  do {

     printf(\"\ 1.Create\");

     printf(\"\ 2.Search\");

     printf(\"\ 3.Recursive Traversals\");

     printf(\"\ 4.Exit\");

     printf(\"\ Enter your choice :\");

     scanf(\"%d\", &choice);

     switch (choice) {

     case 1:

       do {

           new_node = get_node();

           printf(\"\ Enter The Element \");

           scanf(\"%d\", &new_node->data);

           if (root == NULL) /* Tree is not Created */

             root = new_node;

           else

             insert(root, new_node);

           printf(\"\ Want To enter More Elements?(y/n)\");

           ans = getch();

       } while (ans == \'y\');

       break;

     case 2:

       printf(\"\ Enter Element to be searched :\");

       scanf(\"%d\", &key);

       tmp = search(root, key, &parent);

       printf(\"\ Parent of node %d is %d\", tmp->data, parent->data);

       break;

     case 3:

       if (root == NULL)

           printf(\"Tree Is Not Created\");

       else {

           printf(\"\ The Inorder display : \");

           inorder(root);

           printf(\"\ The Preorder display : \");

           preorder(root);

           printf(\"\ The Postorder display : \");

           postorder(root);

       }

       break;

     }

  } while (choice != 4);

}

/*

Get new Node

*/

node *get_node() {

  node *temp;

  temp = (node *) malloc(sizeof(node));

  temp->lchild = NULL;

  temp->rchild = NULL;

  return temp;

}

/*

This function is for creating a binary search tree

*/

void insert(node *root, node *new_node) {

  if (new_node->data < root->data) {

     if (root->lchild == NULL)

       root->lchild = new_node;

     else

       insert(root->lchild, new_node);

  }

  if (new_node->data > root->data) {

     if (root->rchild == NULL)

       root->rchild = new_node;

     else

       insert(root->rchild, new_node);

  }

}

/*

This function is for searching the node from

binary Search Tree

*/

node *search(node *root, int key, node **parent) {

  node *temp;

  temp = root;

  while (temp != NULL) {

     if (temp->data == key) {

       printf(\"\ The %d Element is Present\", temp->data);

       return temp;

     }

     *parent = temp;

     if (temp->data > key)

       temp = temp->lchild;

     else

       temp = temp->rchild;

  }

  return NULL;

}

/*

This function displays the tree in inorder fashion

*/

void inorder(node *temp) {

  if (temp != NULL) {

     inorder(temp->lchild);

     printf(\"%d\", temp->data);

     inorder(temp->rchild);

  }

}

/*

This function displays the tree in preorder fashion

*/

void preorder(node *temp) {

  if (temp != NULL) {

     printf(\"%d\", temp->data);

     preorder(temp->lchild);

     preorder(temp->rchild);

  }

}

/*

This function displays the tree in postorder fashion

*/

void postorder(node *temp) {

  if (temp != NULL) {

     postorder(temp->lchild);

     postorder(temp->rchild);

     printf(\"%d\", temp->data);

  }

}

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

# include <stdio.h>

# include <conio.h>

# include <stdlib.h>

typedef struct BST {

  int data;

  struct BST *lchild, *rchild;

} node;

void insert(node *, node *);

void inorder(node *);

void preorder(node *);

void postorder(node *);

node *search(node *, int, node **);

void main() {

  int choice;

  char ans = \'N\';

  int key;

  node *new_node, *root, *tmp, *parent;

  node *get_node();

  root = NULL;

  clrscr();

  printf(\"\ Program For Binary Search Tree \");

  do {

     printf(\"\ 1.Create\");

     printf(\"\ 2.Search\");

     printf(\"\ 3.Recursive Traversals\");

     printf(\"\ 4.Exit\");

     printf(\"\ Enter your choice :\");

     scanf(\"%d\", &choice);

     switch (choice) {

     case 1:

       do {

           new_node = get_node();

           printf(\"\ Enter The Element \");

           scanf(\"%d\", &new_node->data);

           if (root == NULL) /* Tree is not Created */

             root = new_node;

           else

             insert(root, new_node);

           printf(\"\ Want To enter More Elements?(y/n)\");

           ans = getch();

       } while (ans == \'y\');

       break;

     case 2:

       printf(\"\ Enter Element to be searched :\");

       scanf(\"%d\", &key);

       tmp = search(root, key, &parent);

       printf(\"\ Parent of node %d is %d\", tmp->data, parent->data);

       break;

     case 3:

       if (root == NULL)

           printf(\"Tree Is Not Created\");

       else {

           printf(\"\ The Inorder display : \");

           inorder(root);

           printf(\"\ The Preorder display : \");

           preorder(root);

           printf(\"\ The Postorder display : \");

           postorder(root);

       }

       break;

     }

  } while (choice != 4);

}

/*

Get new Node

*/

node *get_node() {

  node *temp;

  temp = (node *) malloc(sizeof(node));

  temp->lchild = NULL;

  temp->rchild = NULL;

  return temp;

}

/*

This function is for creating a binary search tree

*/

void insert(node *root, node *new_node) {

  if (new_node->data < root->data) {

     if (root->lchild == NULL)

       root->lchild = new_node;

     else

       insert(root->lchild, new_node);

  }

  if (new_node->data > root->data) {

     if (root->rchild == NULL)

       root->rchild = new_node;

     else

       insert(root->rchild, new_node);

  }

}

/*

This function is for searching the node from

binary Search Tree

*/

node *search(node *root, int key, node **parent) {

  node *temp;

  temp = root;

  while (temp != NULL) {

     if (temp->data == key) {

       printf(\"\ The %d Element is Present\", temp->data);

       return temp;

     }

     *parent = temp;

     if (temp->data > key)

       temp = temp->lchild;

     else

       temp = temp->rchild;

  }

  return NULL;

}

/*

This function displays the tree in inorder fashion

*/

void inorder(node *temp) {

  if (temp != NULL) {

     inorder(temp->lchild);

     printf(\"%d\", temp->data);

     inorder(temp->rchild);

  }

}

/*

This function displays the tree in preorder fashion

*/

void preorder(node *temp) {

  if (temp != NULL) {

     printf(\"%d\", temp->data);

     preorder(temp->lchild);

     preorder(temp->rchild);

  }

}

/*

This function displays the tree in postorder fashion

*/

void postorder(node *temp) {

  if (temp != NULL) {

     postorder(temp->lchild);

     postorder(temp->rchild);

     printf(\"%d\", temp->data);

  }

}


Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site