이원 수 에서 어떤 값 의 모든 길 을 찾 아 라.
4 7 8 9
10, 12, 10, 5, 7 두 경 로 를 출력 합 니 다.이원 트 리 노드 의 데이터 구 조 는 structBinary TreeNode / a nodein thebinary tree {intm nValue; / / value of node Binary TreeNode * m pLeft; / / left childof node Binary TreeNode * m pRight; / right childof node
structBinaryTreeNode // a nodein thebinarytree { intm_nValue; // valueof node BinaryTreeNode *m_pLeft; // leftchildof node BinaryTreeNode *m_pRight; //right childof node
}
#include<stdio.h>
#include<stdlib.h>
#define MAX 20
typedef struct BiTreeNode
{
int data;
struct BiTreeNode *left;
struct BiTreeNode *right;
}BiTreeNode_T;
/* */
BiTreeNode_T * CreateBSTree(int *data,int pos,int len)
{
BiTreeNode_T * tr;
if(pos>=len)
{
return NULL;
}
else
{
tr = (BiTreeNode_T *)malloc(sizeof(BiTreeNode_T));
tr->data = data[pos];
tr->left = CreateBSTree(data, 2*pos+1, len);
tr->right = CreateBSTree(data, 2*pos+2, len);
return tr;
}
}
//
void InOrderTraverse(BiTreeNode_T *root)
{
if(root !=NULL)
{
InOrderTraverse(root->left);
if(NULL != root->left || NULL != root->right)
printf("%d not leaf node
", root->data);
else
printf("%d
",root->data);
InOrderTraverse(root->right);
}
}
//
void printPath(int path[], int top)
{
int i = 0;
for(i=0; i<top; i++)
printf("%d ", path[i]);
printf("
");
}
// sum ,path ,top
void findPath(BiTreeNode_T *root, int sum, int top, int path[])
{
path[top++] = root->data;
sum -= root->data;
if (root->left == NULL && root->right==NULL)
{
/* */
if (sum == 0)
{
printPath(path, top);
top--;
sum += root->data;
}
}
else
{
/* */
if(sum <= 0)
{
if(sum == 0)
printPath(path, top);
top--;
sum += root->data;
return;
}
if (root->left != NULL)
findPath(root->left, sum, top, path);
if (root->right!=NULL)
findPath(root->right, sum, top, path);
}
}
int main()
{
int data[]={10, 5, 12, 15, 7, 8, 9};
int len=sizeof(data)/sizeof(int);
BiTreeNode_T * root = CreateBSTree(data, 0, len);
InOrderTraverse(root);
printf("
");
int sum=22;
int top=0;
int path[MAX] = {0};
printf("-------------------------------------
");
findPath(root, sum, top, path);
return 0;
}
/*
4
5 not leaf node
7
10 not leaf node
8
12 not leaf node
9
-------------------------------------
10 5 7
10 12
*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.