//左叶子之和
//计算所有给定二叉树所有左叶子之和
/* 3
/ \
9 20
/ \
15 17
*/
//在这个二叉树中,有两个左叶子,分别是9和15,所有返回24。
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct BiTNode
{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTNode *&T)
{
int ch;
cin>>ch;
if(ch==0)
{
T=NULL;
}
else
{
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void PreTraverse(BiTree T)
{
if(T)
{
cout<<T->data<<" ";
PreTraverse(T->lchild);
PreTraverse(T->rchild);
}
}
int SumLeft(BiTree T)
{
if(T==NULL)
{
return 0;
}
int num=0;
if(T->lchild!=NULL&&T->lchild->lchild==NULL&&T->lchild->rchild==NULL)
{
num +=T->lchild->data;
}
return SumLeft(T->lchild)+SumLeft(T->rchild)+num;
}
int main()
{
BiTree T;
int num;
CreateBiTree(T);
PreTraverse(T);
num=SumLeft(T);
cout<<num;
return 0;
}
LeetCoder——左叶子之和
最新推荐文章于 2021-09-28 15:59:42 发布