二叉樹兩個結點的最低共同父結點

2021-06-03 15:19:13 字數 1128 閱讀 3739

需要思考為什麼採用inorder遍歷是可以的?其他遍歷方式結果不正確?

#include templateclass treenode 

t value_;

treenode* left_;

treenode* right_;

};templateclass visitcontext

treenode* node1_;

treenode* node2_;

bool node1_found_;

bool node2_found_;

int depth_;

int min_depth_;

treenode* same_parent_;

};templatevoid sameparent(treenode* current, visitcontext* context)

}if (current == context->node2_)

}if (context->node1_found_ || context->node2_found_)

}sameparent(current->right_, context);

(context->depth_)--;

}}int main(int argc, char** argv)

int i = 0;

int left_child = 0;

int right_child = 0;

while (true)

tree_nodes[i].left_ = tree_nodes + left_child;

tree_nodes[i].right_ = tree_nodes + right_child;

i++;

} int depth = 0;

visitcontextvisit_context(tree_nodes + 4, tree_nodes + 3);

sameparent(tree_nodes, &visit_context);

if (visit_context.same_parent_ != null)

}

程式採用visitcontext來記錄訪問的軌跡和遍歷的結果。

二叉樹兩個結點的最低共同父結點

輸入二叉樹中的兩個結點,輸出這兩個結點在數中最低的共同父結點。網上看來的題目,以下都有參考。求數中兩個結點的最低共同結點是面試中經常出現的乙個問題。這個問題至少有兩個變種。第一變種是二叉樹是一種特殊的二叉樹 查詢二叉樹。也就是樹是排序過的,位於左子樹上的結點都比父結點小,而位於右子樹的結點都比父結點...

二叉樹兩個結點的最低共同父結點

入二叉樹中的兩個結點,輸出這兩個結點在數中最低的共同父結點。分析 求數中兩個結點的最低共同結點是面試中經常出現的乙個問題。這個問題至 少有兩個變種。第一變種是二叉樹是一種特殊的二叉樹 查詢二叉樹。也就是樹是排序過的,位於 左子樹上的結點都比父結點小,而位於右子樹的結點都比父結點大。我們只需要從根結點...

二叉樹兩結點的最低共同父結點

題目 求二叉樹兩節點的最低共同父節點 求node節點是否在head樹中 bool findnode tree head,tree node tree findlastfather tree head,tree node1,tree node2 if leftnode1 leftnode2 bool ...