题目说明:
题目解读:
1、给定一个二叉树,求根节点到最远支点的距离
2、先给出一个根,大于的右边插,小于的左边插,二叉树最多有2个支点,所以示例如上图
示例代码:
// Day22_BinarySearchTrees.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
class Node
{
public:
int data;
Node *left;
Node *right;
Node( int d )
{
data = d;
left = NULL;
right = NULL;
}
};
class Solution
{
public:
Node * insert( Node* root, int data )
{
if( root == NULL )
{
return new Node( data );
}
else
{
Node *cur;
if( data <= root->data )
{
cur = insert( root->left, data );
root->left = cur;
}
else
{
cur = insert( root->right, data );
root->right = cur;
}
return root;
}
}
int getHeight( Node* root )
{
int left = 0, right = 0;
if( root == NULL )
{
return -1;
}
else
{
left = getHeight( root->left ) + 1;
right = getHeight( root->right ) + 1;
}
return left > right ? left : right;
}
};
//获取一个数在2的几次方之间
int getNum( int num )
{
int tmp = 1;
int time = 1;
for( size_t i = 1; i < num; i++ )
{
tmp *= 2;
if( num >= tmp )
{
time++;
}
}
return time;
}
//by zhaocl
int main()
{
Solution mytree;
Node * root = NULL;
int t;
int data;
cin >> t;
while( t-- > 0 )
{
cin >> data;
root = mytree.insert( root, data );
}
int height = mytree.getHeight( root );
cout << height;
system( "pause" );
return 0;
}
知识点:
1、二叉树的了解
2、递归的应用