求二叉树中最大和的路径

假设二叉树中所有节点的值为int类型,采用二叉链存储。设计递归算法求二叉树中从根节点到叶子节点路径和最大的一条路径。

先序创建二叉树,输入0表示无左孩子或右孩子
求二叉树中最大和的路径_第1张图片求二叉树中最大和的路径_第2张图片

#include
using namespace std;

typedef struct BiTree
{
	int data;
	struct BiTree *left,*right;
 }BiTree; 
 
 void CreatBiTree(BiTree *&T)
 {
 	int temp;
 	cin>>temp;
 	if(temp!=0)
 	{
 		T=new BiTree;
		T->data=temp;
 		CreatBiTree(T->left);
 		CreatBiTree(T->right);
	 }
	else T=nullptr;
 }

int PathMax(BiTree *T)
{
	if(T==0)return 0;
	else
	{
		return max(T->data+PathMax(T->left),T->data+PathMax(T->right));
	}
}

void Path(BiTree *T)
{
	if(T)
	{
		cout<data<<' ';
		if(PathMax(T->left)>=PathMax(T->right))
		{
			Path(T->left);
		}
		else
		{
			Path(T->right);
		}
	 } 
}

int main()
{
	BiTree *T;
	CreatBiTree(T);
	cout<<"+++++++++++++++++++++++++++++++++++++"<

你可能感兴趣的:(求二叉树中最大和的路径)