An electronic device comprising: a memory (290, 360, 430) configured to store a hierarchical beam codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600); and a processor operably connected to the memory, the processor configured to: determine usage probabilities for codewords in the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600), wherein the codewords are represented by nodes assigned to one of a plurality of tiers of the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600) based on a tier identifier; change a structure of the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600) based on the usage probabilities so that nodes associated with codewords having relatively higher usage probabilities are located closer to a root node than nodes associated with codewords having relatively lower usage probabilities; and select a codeword from the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600) for use in wireless communication, wherein the codeword is selected by a codeword selection procedure performed on the changed structure of the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600). a memory (290, 360, 430) configured to store a hierarchical beam codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600); and a processor operably connected to the memory, the processor configured to: determine usage probabilities for codewords in the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600), wherein the codewords are represented by nodes assigned to one of a plurality of tiers of the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600) based on a tier identifier; change a structure of the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600) based on the usage probabilities so that nodes associated with codewords having relatively higher usage probabilities are located closer to a root node than nodes associated with codewords having relatively lower usage probabilities; and select a codeword from the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600) for use in wireless communication, wherein the codeword is selected by a codeword selection procedure performed on the changed structure of the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600). determine usage probabilities for codewords in the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600), wherein the codewords are represented by nodes assigned to one of a plurality of tiers of the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600) based on a tier identifier; change a structure of the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600) based on the usage probabilities so that nodes associated with codewords having relatively higher usage probabilities are located closer to a root node than nodes associated with codewords having relatively lower usage probabilities; and select a codeword from the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600) for use in wireless communication, wherein the codeword is selected by a codeword selection procedure performed on the changed structure of the hierarchical codebook (200, 1500a, 1500b, 1600a, 1600b, 1600c, 2000, 2500, 2600).