1.尋找二叉樹中數值為x的節點
//尋找二叉樹中數值為x的節點
BTNode* TreeFind(BTNode* root, BTDataType x)//傳過來二叉樹的地址和根的地址,以及需要查找的數據
{if (root == Null){return Null;}//首先需要先判斷這個樹是否為空,如果為空直接返回空if (root->data == x){return root;}//如果根找到了這個數據就返回這個數據BTNode* ret1 = TreeFind(root->left, x)if (ret1)return ret1;//先查找數據根的左邊,將找到的數據存起來BTNode* ret2 = TreeFind(root->right, x)if (ret2)return ret2;return Null;//如果兩個都沒有找到就需要返回空
}
2.比較兩個二叉樹是否相同
每個節點都當作根來比較。
運用遞歸(后續如果遞歸不便于遞歸則直接轉化為非遞歸就行了)
bool isSameTree(struct TreeNode* p, struct TreeNode* q)
{if (p == NULL && q == NULL)return true;//如果兩個都為空則是相等的if (p == NULL || q == NULL)return false;//若一個為空,一個不為空if (p->val != q->val)//值不同{return false;}return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}//反復遞歸
下一章:層序遍歷