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