시스템 설계 면접 질문 너무 개방적이어서 올바른 준비 방법을 알기가 너무 어렵습니다. 이제 구매 후 Amazon, Microsoft 및 Adobe의 디자인 라운드를 해독할 수 있습니다. 이 책은. 매일 수정 하나 디자인 질문 그리고 나는 당신이 디자인 라운드를 깨뜨릴 수 있다고 약속합니다.
차례
바이너리 트리는 데이터를 쉽게 저장하고 검색 할 수있는 기본적인 데이터 구조입니다. 각 노드는 왼쪽 포인터, 오른쪽 포인터 및 데이터를 포함하는 노드로 구성됩니다.
루트 포인터는 트리의 최상위 노드를 가리키고 왼쪽 및 오른쪽 포인터는 양쪽에있는 더 작은 하위 트리를 가리 킵니다.
이진 트리 생성
암호알고리즘
1. 먼저 새 노드를 만듭니다.
데이터가있는 노드, 왼쪽 및 오른쪽 자식 노드에 대한 참조를 정의합니다.
2. 삽입 한 첫 번째 값을 루트로 만드십시오.
3. 루트의 왼쪽에 다음 값을 삽입하려면 루트-> 왼쪽으로 삽입하고 오른쪽에 삽입하려면 루트-> 오른쪽으로 삽입합니다.
4. 트리의 오른쪽 위치에 노드를 삽입하려면 3 단계를 반복합니다. 예를 들어 루트의 왼쪽에 노드를 삽입하려면 root-> left-> left로 삽입합니다.
예
C ++ 프로그램
#include <stdlib.h> #include <stdio.h> struct node { char data; struct node *left; struct node *right; }; struct node* newNode(char data) { // Allocate memory for new node struct node* node = (struct node*)malloc(sizeof(struct node)); // Assign data to this node node->data = data; // Initialize left and right children as NULL node->left = NULL; node->right = NULL; return(node); } void prinTree(struct node* node) //Using PreOrder Traversal for Printing a Tree { if(node == NULL) return; printf("%c\n",node->data ); prinTree(node->left); prinTree(node->right); } int main() { //Creating a Tree with nodes A, B, C, D, E, F struct node *root = newNode('A'); // Creating a root with left and right pointers Null root->left = newNode('B'); // Creating a left node to A root->right = newNode('C'); // Creating a right node to A root->left->left = newNode('D'); //Creating a left left node to A root->left->right = newNode('E'); //Creating a left right node to A root->right->left = newNode('F'); //Creating a right left node to A prinTree(root); //It will print the Tree return 0; }
