遍历二叉树
中序遍历
void InOrderTraverse(BiTree T)
{
if(T)
{
InOrderTraverse(T -> lchild);
std::cout << T -> value << std::endl;
InOrderTraverse(T -> rchild);
}
}
先序遍历
void InOrderTraverse(BiTree T)
{
if(T)
{
std::cout << T -> value << std::endl;
InOrderTraverse(T -> lchild);
InOrderTraverse(T -> rchild);
}
}
后序遍历
void InOrderTraverse(BiTree T)
{
if(T)
{
InOrderTraverse(T -> lchild);
InOrderTraverse(T -> rchild);
std::cout << T -> value << std::endl;
}
}
计算二叉树的深度
int Depth(BiTree T)
{
if(T == NULL)
return 0;
int m = Depth(T -> lchild);
int n = Depth(T -> rchild);
if(m > n)
return m+1;
return n+1;
}
判断平衡二叉树
bool banlance = true;
int depth(TreeNode* T){
if(T == NULL) return 0;
int m = depth(T->left);
int n = depth(T->right);
if(abs(m-n)>1) //判断当前节点是否平衡
banlance = false; //只要一个节点不平衡,则banlance为false
if(m > n)
return m+1;
return n+1;
}
public:
bool isBalanced(TreeNode* root) {
depth(root);
return banlance;
}
如果对您有用的话,请点个赞吧!