#include<iostream>
#include<string>
using namespace std;
struct TreeNode
{
int val;
struct TreeNode*left;
struct TreeNode*right;
TreeNode(int x):val(x),left(nullptr),right(nullptr){
}
};
//二叉树的镜像
TreeNode* mirrorTree(TreeNode* root) {
if(root==nullptr)
{
return nullptr;
}
TreeNode*temp=root->left;
root->left=mirrorTree(root->right);
root->right=mirrorTree(temp);
return root;
}
// 二叉树的最长路径和 直径
int maxD = 0;
int maxdepth(TreeNode* node){
if(node == nullptr) return 0;
int leftdepth = maxdepth(node->left);
int rightdepth = maxdepth(node->right);
maxD = max(maxD, leftdepth + rightdepth);
return max(leftdepth, rightdepth) + 1;
}
int diameterOfBinaryTree(TreeNode* root) {
maxdepth(root);
return maxD;
}
//树的创建
int N=0;
TreeNode* createTree(string&zfsz){
if(zfsz[N]=='#'){
N++;
return NULL;
}
TreeNode* root= new TreeNode(zfsz[N]-48);
N++;
root->left=createTree(zfsz);
root->right=createTree(zfsz);
return root;
}
//前序遍历
void pretree(TreeNode*root)
{
if(root==nullptr)
return ;
cout<<root->val<<endl;
pretree(root->left);
pretree(root->right);
}
int main()
{
string str;
cin>>str;
TreeNode*root=createTree(str);
pretree(root);
//TreeNode*reroot=mirrorTree(root);
//pretree(reroot);
cout<<diameterOfBinaryTree(root)<<endl;
// 1246###5#7##3##
// 12##3##
system("pause");
return 0;
}
Diameter of binary tree + mirror exchange
Guess you like
Origin blog.csdn.net/m0_46717588/article/details/119817824
Recommended
Ranking