C 十 二叉樹

2021-10-10 19:57:49 字數 2771 閱讀 4774

樹的基本概念:

樹具有遞迴性,非線性

完全二叉樹  :所有節點都在

舉例:

遞迴遍歷二叉樹:

#include #include #include #includetypedef struct binarynode binarynode;

//遞迴遍歷

void recursion(binarynode* root)

//遍歷左子樹

recursion(root->lchild);

//遍歷右子樹

recursion(root->rchild);

//先訪問根節點

printf("%c", root->ch);

}void creatbinarytree() ;

binarynode node2 = ;

binarynode node3 = ;

binarynode node4 = ;

binarynode node5 = ;

binarynode node6 = ;

binarynode node7 = ;

binarynode node8 = ;

// binarynode node9 = ;

//建立節點關係

node1.lchild = &node2;

node1.rchild = &node6;

node2.rchild = &node3;

node3.lchild = &node4;

node3.rchild = &node5;

node6.rchild = &node7;

node7.lchild = &node8;

//先序遍歷

recursion(&node1);

}int main()

求葉子節點數:(葉子節點概念,無左孩子和右孩子)

// 求葉子節點數目

#include #include #include #includetypedef struct binarynode binarynode;

void recursion(binarynode* root)

printf("%c", root->ch);

recursion(root->lchild);

recursion(root->rchild);

}binarynode* copybonarytree(binarynode* root)

binarynode* lchild = copybonarytree(root->lchild);

binarynode* rchild = copybonarytree(root->rchild);

binarynode* newnode = (binarynode*)malloc(sizeof(binarynode));

newnode->ch = root->ch;

newnode->lchild = lchild;

newnode->rchild = rchild;

return newnode;

}void free_binarytree(binarynode* root)

free_binarytree(root->lchild);

free_binarytree(root->rchild);

free_binarytree(root);

}void creatbinarytree() ;

binarynode node2 = ;

binarynode node3 = ;

binarynode node4 = ;

binarynode node5 = ;

binarynode node6 = ;

binarynode node7 = ;

binarynode node8 = ;

// binarynode node9 = ;

//建立節點關係

node1.lchild = &node2;

node1.rchild = &node6;

node2.rchild = &node3;

node3.lchild = &node4;

node3.rchild = &node5;

node6.rchild = &node7;

node7.lchild = &node8;

binarynode* root = copybonarytree(&node1);

recursion(root);

free_binarytree(root);

}int main()

LeetCode(十)二叉樹相關 1325

題目描述 給你一棵以 root 為根的二叉樹和乙個整數 target 請你刪除所有值為 target 的 葉子節點 注意,一旦刪除值為 target 的葉子節點,它的父節點就可能變成葉子節點 如果新葉子節點的值恰好也是 target 那麼這個節點也應該被刪除。也就是說,你需要重複此過程直到不能繼續刪...

每日程式設計(二十二) 二叉樹

題目描述 給定乙個二叉搜尋樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉搜尋樹 root 6,2,8,0,4,7,9,null,null,3,5 示例 1 輸入 root 6,2,8,0,4,7,9,null,null,3,5 p 2,q 8 輸出 6 解釋 節點 2 和節點 8 的最...

資料結構(十)二叉樹 基本概念

二叉樹結構一直以來都是資料結構課程中的重點和難點。在原始的二叉樹的基礎上,有不斷演化出了很多其他基於二叉樹的結構,但是不管從二叉樹衍生出來的結構多麼複雜多變,但是底層對於二叉樹結構的理論和操作都是相通的。所以從最基本的原生二叉樹開始,不斷進行總結和實踐,最終達到理解和掌握原生二叉樹和一些比較有代表性...