C 演算法之 在二叉樹當中找出和為某一值的路徑

2021-06-28 04:39:34 字數 1112 閱讀 8953

題目:輸入乙個整數和一棵二元樹。

從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。

列印出和與輸入整數相等的所有路徑。

例如 輸入整數22和如下二元樹

10   

/ \  

5  12   

/ \   

4    7

則列印出兩條路徑:10, 12和10, 5, 7。

採用先序遍歷以及 棧的特性 後進先出:

void printpath(btree* proot,int sum, const int key)

if (sum+proot->m_nvalue == key) //如果當前值加上路徑和為目標值,則輸出

cout key)//如果大於目標值,則返回

else//如果小於,則入棧

}

完整測試**:

// printpath.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include #include #include using namespace std;

//節點的資料結構

class btree

};//二叉樹的插入實現

void insert(int value, btree* &root)

else if(value < root->m_nvalue)

insert(value,root->m_nleft);

else if(value > root->m_nvalue)

insert(value,root->m_nright);

else

;}void printpath(btree* proot,int sum, const int key)

if (sum+proot->m_nvalue == key) //如果當前值加上路徑和為目標值,則輸出

cout key)//如果大於目標值,則返回

else//如果小於,則入棧

}int _tmain(int argc, _tchar* argv)

二叉樹 判斷二叉樹是否為完全二叉樹

問題描述 判斷一棵二叉樹是否為完全二叉樹。知識點 完全二叉樹是指除二叉樹的最後一層外,其他各層的節點數達到最大個數,且最後一層的葉節點從左到右連續存在,只缺右側若干節點。演算法實現 class node is complete binary tree public static boolean is...

二叉樹是否為完全二叉樹

單鏈表查詢倒數第k的結點 下圖判斷是否二叉樹 假設圖中三個二叉樹的黃顏色部分沒有,各樹的名稱就是圖上所標。首先由要求,需要層序遍歷,層序遍歷會使用到佇列。要判斷乙個二叉樹是否為完全二叉樹,首先需要找到臨界點,比如此二叉樹c結點。如果c結點沒有左右孩子,現在就要判斷,b的左右孩子d和e,只要d和e至少...

判斷該二叉樹是否為搜尋二叉樹和完全二叉樹。

轉向我的部落格位址 題目描述 給定一棵二叉樹,已經其中沒有重複值的節點,請判斷該二叉樹是否為搜尋二叉樹和完全二叉樹。示例1輸入 輸出 true,true 備註 n 500000 其中,判斷搜尋二叉樹,只需要中序遍歷一次,取出值,看是否是遞增即可。判斷是否是完全二叉樹,只需要按層遍歷一次,找到第乙個n...