// fowlup.cpp -- unique_ptr not a good choice
#include <iostream>
#include <string>
#include <stack>
#include<vector>
#include<string>
#include <algorithm>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) :val(x), left(nullptr), right(nullptr) {}
TreeNode() :val(), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {}
};
int getDepth(TreeNode* cur)
{
if (cur == nullptr) return 0;
int depthL = getDepth(cur->left);
if (depthL == -1) {
return -1;
}
int depthR = getDepth(cur->right);
if (depthR == -1) {
return -1;
}
int ret;
if (abs(depthL - depthR) > 1) {
ret = -1;
}
else {
ret = 1 + max(depthR, depthL);
}
return ret;
}
int main()
{
using namespace std;
TreeNode root3_1 = { 1 };
TreeNode root3_2 = { 3 };
TreeNode root2_1 = { 2,&root3_1,&root3_2 };
TreeNode root3_3 = { 5 };
TreeNode root3_4 = { 7 };
TreeNode root2_2 = { 6,&root3_3,&root3_4 };
TreeNode root1_1 = { 4,&root2_1,&root2_2 };
//isblanch
int i = getDepth(&root1_1);
cin.get();
return 0;
}
平衡二叉树 是任意子树的高度不大于1;
高度:是距离叶子节点的距离
深度:距离根节点