二叉树节点结构C定义:
typedef struct nodeT{
int data;
struct nodeT *left;
struct nodeT *right;
} node;
1. 二叉搜索树查找
递归方法:
node *LookupNode(node *root, int data)
{
if(!root) return NULL;
else if(root->data == data) return root;
else if(root->data < data) return LookupNode(root->right, data);
else if(root->data > data) return LookupNode(root->left, data);
}
非递归方法:
node *LookupNode(node *root, int data)
{
node *curNode = root;
while(curNode)
{
if(curNode->data == data) return curNode;
else if(curNode->data < data) curNode = curNode->right;
else if(curNode->data > data) curNode = curNode->left;
}
return NULL;
}
当二叉搜索树为二叉平衡树时,二叉树查找的最差复杂度为O(log(n));否则,二叉树最坏退化成链表,最差复杂度为O(n)。