Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 이진 트리의 모든 잎 노드의 곱


노드를 포함하는 이진 트리가 주어지면 주어진 이진 트리의 모든 리프 노드의 곱을 찾는 것이 작업입니다.

리프 노드는 자식이 없는 끝 노드입니다. 트리에서 노드는 부모 노드만 될 수 있는 루트 노드를 제외하고 부모 노드 또는 자식 노드 역할을 할 수 있습니다. 따라서 오른쪽 및 왼쪽 포인터가 NULL인 노드는 리프 노드입니다.

입력

C++에서 이진 트리의 모든 잎 노드의 곱

출력

리프 노드는 -:23, 34, 25제품-:23*34*25 =19550

접근

  • 노드 데이터 입력

  • 루트 노드에서 시작하여 탐색을 위해 왼쪽 하위 디렉터리 또는 오른쪽 하위 디렉터리로 이동하는 모든 노드를 탐색합니다.

  • 오른쪽과 왼쪽 포인터가 NULL인 노드를 임시 변수에 저장하여 제품을 찾습니다.

  • 곱한 값을 보유하는 임시 변수의 값을 인쇄합니다.

알고리즘

StartStep 1 → 노드의 구조 생성 및 temp, next 및 head는 구조 노드에 대한 포인터 struct node int data 노드 생성 *left, *right EndStep 2 → 트리 노드에 노드를 삽입하는 함수 선언* new_node( int data) set node* temp =new node() Set temp→data =data Set temp→left =temp→right =NULL return temp EndStep 3 → 모든 리프 노드의 곱을 찾는 함수 선언 void leaf(node* root , int &product) IF (!root) Return End IF (!root→left &&!root→right) Set product *=root→data 호출 leaf(root→left, product) 호출 leaf(root→right, product)Step 4 → main()에서 노드 생성* root =new_node(10) root 설정→left =new_node(20) set root→left→left =new_node(30) int product =1 설정 leaf(root, product) 호출 display productStop 

예시

#include 네임스페이스 std;//nodestruct 노드의 구조 사용{ int data; node *left, *right;};//treenode*의 새 잎을 만드는 함수 new_node(int data){ node* temp =new node(); 온도 → 데이터 =데이터; 온도→왼쪽 =온도→오른쪽 =NULL; return temp;}//treevoid leaf(node* root, int &product){ if (!root) return; if (!root→left &&!root->right) product *=root→data; 잎(뿌리→왼쪽, 곱); 리프(루트→오른쪽, 제품);}int main(){ 노드* 루트 =new_node(10); 루트→왼쪽 =new_node(20); 루트→왼쪽→왼쪽 =new_node(30); 루트→왼쪽→오른쪽 =new_node(40); 루트→오른쪽 =new_node(50); 루트→오른쪽→오른쪽 =new_node(60); 루트→오른쪽→왼쪽 =new_node(70); 정수 곱 =1; 잎(뿌리, 제품); cout<<"리프 노드의 제품은 다음과 같습니다."<<제품; 반환 0;}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

리프 노드의 곱은 5040000입니다.