Last active
May 19, 2024 03:09
-
-
Save mycodeschool/9507131 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Binary tree - Level Order Traversal */ | |
#include<iostream> | |
#include<queue> | |
using namespace std; | |
struct Node { | |
char data; | |
Node *left; | |
Node *right; | |
}; | |
// Function to print Nodes in a binary tree in Level order | |
void LevelOrder(Node *root) { | |
if(root == NULL) return; | |
queue<Node*> Q; | |
Q.push(root); | |
//while there is at least one discovered node | |
while(!Q.empty()) { | |
Node* current = Q.front(); | |
Q.pop(); // removing the element at front | |
cout<<current->data<<" "; | |
if(current->left != NULL) Q.push(current->left); | |
if(current->right != NULL) Q.push(current->right); | |
} | |
} | |
// Function to Insert Node in a Binary Search Tree | |
Node* Insert(Node *root,char data) { | |
if(root == NULL) { | |
root = new Node(); | |
root->data = data; | |
root->left = root->right = NULL; | |
} | |
else if(data <= root->data) root->left = Insert(root->left,data); | |
else root->right = Insert(root->right,data); | |
return root; | |
} | |
int main() { | |
/*Code To Test the logic | |
Creating an example tree | |
M | |
/ \ | |
B Q | |
/ \ \ | |
A C Z | |
*/ | |
Node* root = NULL; | |
root = Insert(root,'M'); root = Insert(root,'B'); | |
root = Insert(root,'Q'); root = Insert(root,'Z'); | |
root = Insert(root,'A'); root = Insert(root,'C'); | |
//Print Nodes in Level Order. | |
LevelOrder(root); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
struct queue {
int data;
struct queue* next;
};
struct queue* front = NULL;
struct queue* rear = NULL;
void push(struct queuenode) {
struct queue temp = (struct queue*)malloc(sizeof(struct queue));
temp->data = node->data;
temp->next = NULL;
if (rear == NULL && front == NULL) {
front = rear = temp;
return;
}rear->next = temp;
rear = temp;
}
void pop() {
struct queue* temp = front;
if (rear == NULL && front == NULL) {
return;
}if (front == rear) {
front = rear = NULL;
}
front = front->next;
free(temp);
}
struct BstNode {
int data;
struct BstNode* left;
struct BstNode* right;
};
struct BstNode* Getnewnode(int data) {
struct BstNode* newnode = (struct BstNode*)malloc(sizeof(struct BstNode));
newnode->data = data;
newnode->left = NULL;
newnode->right = NULL;
return newnode;
}
struct BstNode* Insert(struct BstNode* root, int data) {
if (root == NULL) {
root = Getnewnode(data);
}
else if (data <= root->data) {
root->left = Insert(root->left, data);
}
else {
root->right = Insert(root->right, data);
}return root;
}
struct queue*get() {
}
void Levelorder(struct BstNoderoot ) {
if (root == NULL) {
return;
}push(root);
while (front != NULL && rear != NULL) {
struct BstNode current =get() ;
}
int main() {
struct BstNode* root = NULL;
root = Insert(root, 3);
root = Insert(root, 6);
root = Insert(root, 1);
root = Insert(root, 9);
root = Insert(root, 11);
root = Insert(root, 8);
root = Insert(root, 10);
root = Insert(root, 19);
root = Insert(root, 5);
Levelorder(root);
return 0;
}### 求助只能打印出来第一个root