C# · 12月 20, 2021

二叉树-C++ | 层级顺序遍历二叉树_2

层级顺序遍历二叉树 

/* Binary tree – Level Order Traversal */

#include

#include

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 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<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 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);

}

编程就是算法和数据结构,算法和数据结构是编程的灵魂。