二叉樹的一些通用演算法 C

2021-06-28 02:16:55 字數 1572 閱讀 4969

二叉樹的一些通用演算法,包括前、中、後、層遍歷,查詢指定節點/父節點,求樹高,最大最小節點、兩節點最近公共父節點,任一節點到根的路徑,任一節點在樹中的層次等。

int element = ;           //   4,5,6,3,1,9,8,7,2,10

#define max(a,b) ((a)>(b))?(a):(b)

#define array_size(x) sizeof(x)/sizeof(x[0])

bool isleaf(binarytree* root)

bool hasbothchild(binarytree* root)

bool hasonlyleftchild(binarytree* root)

bool hasonlyrightchild(binarytree* root)

int getmaxelement(binarytree* root)

}int getbinarytreeheight(binarytree* root)

}void preorderbinarytree(binarytree* root)

}void midorderbinarytree(binarytree* root)

}void postorderbinarytree(binarytree* root)

}void levelorderbinarytree(binarytree* root)

if(current->right != null)}}

binarytree* searchnodefrombinarytree(binarytree* root, int data)

binarytree* searchfathernode(binarytree* root, int data)

void printpathfromroottocurrent(binarytree* root, int data, int* height)

//  push

if(height != null)       //  return the height of the node

while(st.top != 0)

// pop         print the path

}int getnodeheight(binarytree* root, int data)

bool isyourancestor(binarytree* root, int data)

binarytree* searchcommonfathernode(binarytree* root,  int m, int n)

return root;

}}else

return root;  

}}}binarytree* createbinarytree()

return root;

}int getleafcount(binarytree* root)

}int getnonleafcount(binarytree* root)

void binarytreeoperationmenu(void)

} while(true);   

}

二叉樹的一些演算法《未完》

求二叉樹中距離最遠的2個節點的距離 struct node 定義 空二叉樹的高度為 1,只有根節點的二叉樹高度為0,根節點在0層,深度為0。兩個節點的距離為兩個節點間最短路徑的長度。求兩節點的最遠距離,實際就是求二叉樹的直徑。假設相距最遠的兩個節點分別為a b,它們的最近共同父節點 允許乙個節點是其...

二叉樹的一些簡單演算法(一)

二叉樹的一些簡單演算法 一 由於最近資料結構學到了樹的這一章節,而二叉樹的演算法一直被各大公司視為必考內容,因此,身為小菜菜的我也決定寫幾篇關於二叉樹的演算法 這次我簡單的寫一下二叉樹的建立和遍歷演算法 include using namespace std typedef char t class...

二叉樹的一些概念

1 滿二叉樹 樹內的任何結點,或為樹葉 圖1中2689 或有兩個非空子樹。滿二叉樹定理 非空滿二叉樹樹葉的數目等於其分支結點數目加1。此外,乙個二叉樹第i層 根節點為0層 最多能有2的i次方個結點。圖12 平衡二叉樹 如果樹中任何結點的兩個子樹高度差是0或者1。對於圖1來說結點1左子樹高度為1,右子...