需要思考為什麼採用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 ...